LeetCode 面试题35 复杂链表的复制
程序员文章站
2022-05-06 11:33:13
...
https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/solution/fu-za-lian-biao-de-fu-zhi-jian-dan-yi-dong-de-san-/
思路参考了题解
/*
// Definition for a Node.
class Node {
int val;
Node next;
Node random;
public Node(int val) {
this.val = val;
this.next = null;
this.random = null;
}
}
*/
class Solution {
public Node copyRandomList(Node head) {
if(head==null){
return null;
}
Node cur = head;
//将每个结点后新增一个双胞胎兄弟
while(cur != null){
Node cloneNode = new Node(cur.val);
cloneNode.next = cur.next;
cur.next = cloneNode;
cur = cur.next.next;
}
//给新增结点的随机指针域赋值
cur = head;
while(cur != null){
Node newNode = cur.next;
newNode.random = cur.random==null?null:cur.random.next;
cur = newNode.next;
}
//将新旧链表断开
cur = head;
Node cloneHead = cur.next;
while(cur != null){
Node newNode = cur.next;
cur.next = newNode.next;
newNode.next = newNode.next==null?null:newNode.next.next;
cur = cur.next;
}
return cloneHead;
}
}
上一篇: 《大话重构》免费送书活动开始啦
推荐阅读
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
leetcode 160剑指offer面试题52. 两个链表的第一个公共节点(python3)
-
复杂链表的复制
-
[PHP] 算法-复制复杂链表的PHP实现
-
LeetCode 138. 复制带随机指针的链表
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
LeetCode 面试题35. 复杂链表的复制
-
复杂链表的复制
-
复杂链表的复制(链表的每个结点,有一个next指针指向下一个结点,还有一个random指针指向这个链表中的一个随机结点或者NULL)
-
复杂链表的复制