/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; * RandomListNode *next, *random; * RandomListNode(int x) : label(x), next(NULL), random(NULL) {} * }; */ class Solution { public: RandomListNode *copyRandomList(RandomListNode *head) { RandomListNode * p = head; while(p != NULL) { RandomListNode * newNode = new RandomListNode(0); newNode->label = p->label; newNode->next = p->next; newNode->random = p->random; p->next = newNode; p = p->next->next; } p = head; while(p != NULL) { RandomListNode * nextNode = p->next; if(nextNode->random != NULL) { nextNode->random = nextNode->random->next; } p = p->next->next; } p = head; RandomListNode * dummy = new RandomListNode(-1); RandomListNode * q = dummy; while(p != NULL) { q->next = p->next; q = q->next; p->next = q->next; q->next = NULL; p = p->next; } return dummy->next; } };
4/12/2014
Leetcode -- Copy List with Random Pointer
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment