救命!!!!!
我做题目的时候出来的代码总是比题解多三四十行,到底怎样才能写出那种简洁巧妙的代码啊???
我个人思考问题的很多时候是一种步步为营的感觉,什么意思呢?就是总会把题目往模拟的方向上靠。
这就会导致一个问题,我在写代码的时候别人的一步可能是我的三步。。。。
请问各位佬,怎样改变思考方式啊啊啊啊 orz orz orz
P.S.
下面是一个例子
138. 随机链表的复制
/*
// Definition for a Node.
class Node {
public:
int val;
Node* next;
Node* random;
Node(int _val) {
val = _val;
next = NULL;
random = NULL;
}
};
*/
class Solution {
public:
Node* copyRandomList(Node* head) {
vector<int> arr;
Node* rec=head;
Node* rec1=head;
while(rec!=NULL)
{
int s=0;
while(rec1)
{
if(rec1==rec->random)
{
arr.push_back(s);
break;
}
s++;
rec1=rec1->next;
}
if(rec1==NULL)
arr.push_back(-1);
rec1=head;
rec=rec->next;
}
Node* newHead=new Node(-1);
Node* res=newHead;
Node* temp=head;
while(temp)
{
Node* newNode=new Node(temp->val);
newHead->next=newNode;
newHead=newNode;
temp=temp->next;
}
newHead->next=NULL;
newHead=res->next;
Node* recc=res->next;
int l=arr.size();
for(int i=0;i<l;i++)
{
if(arr[i]==-1)
newHead->random=NULL;
else
{
Node* temptemp=recc;
for(int j=0;j<arr[i];j++)
{
temptemp=temptemp->next;
}
newHead->random=temptemp;
}
newHead=newHead->next;
}
return res->next;
}
};