您的位置:首页 > 运维架构

Copy List with Random Pointer

2015-07-18 12:22 246 查看

称号



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.



方法

public RandomListNode copyRandomList(RandomListNode head) {
RandomListNode newHead = null;

if (head != null) {
RandomListNode cur = head;
while (cur != null) {
RandomListNode temp = new RandomListNode(cur.label);
temp.next = cur.next;
cur.next = temp;
cur = cur.next.next;
}
cur = head;
RandomListNode newCur = head.next;
while(cur != null) {
if (cur.random != null) {
newCur.random = cur.random.next;
}
cur = cur.next.next;
if (cur != null) {
newCur = newCur.next.next;
}

}

cur = head;
newHead = cur.next;
newCur = newHead;
while (cur != null) {
cur.next = newCur.next;
cur = newCur.next;
if (cur != null) {
newCur.next = cur.next;
newCur = cur.next;
} else {
newCur.next = null;
}

}
}

return newHead;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: