Copy List with Random Pointer

mac2022-06-30  29

Description:

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.

Return a deep copy of the list.

Challenge

Could you solve it with O(1) space?

Solution:

/** * 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: /** * @param head: The head of linked list with a random pointer. * @return: A new head of a deep copy of the list. */ RandomListNode *copyRandomList(RandomListNode *head) { if (!head) return nullptr; auto node = head; while (node) { auto tmp = node->next; node->next = new RandomListNode(node->label); node->next->next = tmp; node = tmp; } node = head; while (node) { if (node->random) node->next->random = node->random->next; node = node->next->next; } node = head; auto rc = head->next; while (node) { auto tmp = node->next->next; if (tmp) node->next->next = tmp->next; node->next = tmp; node = tmp; } return rc; } };

转载于:https://www.cnblogs.com/deofly/p/copy-list-with-random-pointer.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)