网站优化策略分析,局域网内的网站建设,网站商城app 建设方案,沧州手机网站开发请实现 copyRandomList 函数#xff0c;复制一个复杂链表。在复杂链表中#xff0c;每个节点除了有一个 next 指针指向下一个节点#xff0c;还有一个 random 指针指向链表中的任意节点或者 null。 示例 1#xff1a; 输入#xff1a;head [[7,null],[13,0],[11,4],[10,2…请实现 copyRandomList 函数复制一个复杂链表。在复杂链表中每个节点除了有一个 next 指针指向下一个节点还有一个 random 指针指向链表中的任意节点或者 null。 示例 1 输入head [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出[[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2 输入head [[1,1],[2,1]] 输出[[1,1],[2,1]] 示例 3 输入head [[3,null],[3,0],[3,null]] 输出[[3,null],[3,0],[3,null]] 示例 4
输入head [] 输出[] 解释给定的链表为空空指针因此返回 null。
提示
-10000 Node.val 10000 Node.random 为空null或指向链表中的节点。 节点数目不超过 1000 。
思路
每个结点后面复制一个和他相同的结点连在后面
代码
/*
// 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(headnull) { return head; } Node p head; while(p!null) { Node node new Node(p.val); node.next p.next; p.next node; p p.next.next; } p head; while(p!nullp.next!null) { if(p.random!null) { p.next.random p.random.next; } p p.next.next; } Node x head.next; Node q head; while(q.next!null) { Node t q.next; q.next q.next.next; q t; } return x; }
}