之前写的自己感觉是错的,但是不知道为什么能过
/*
// 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) {
if(!head) return NULL;
Node* cur=head;
while(cur) {
Node* tmp = new Node(cur->val);
tmp->next=cur->next;
cur->next=tmp;
cur=tmp->next;
}
cur=head;
while(cur) {
if(cur->random)
cur->next->random=cur->random->next;
cur=cur->next->next;
}
cur=head;
Node* pre=head->next;
Node* ans=pre;
while(cur) {
cur->next=cur->next->next;
pre->next=pre->next?pre->next->next:NULL;
cur=cur->next;
pre=pre->next;
}
return ans;
}
};