Copy List with Random Pointer
来源:互联网 发布:软件p光头 编辑:程序博客网 时间:2024/06/07 03:56
两次遍历。
请一定要明白每次从map取出的value是啥,不要搞混啊。
对于空间为1的做法,之后看点击打开链接
/** * Definition for singly-linked list with a random pointer. * class RandomListNode { * int label; * RandomListNode next, random; * RandomListNode(int x) { this.label = x; } * }; */public class Solution { public RandomListNode copyRandomList(RandomListNode head) { if (head == null) { return null; } Map<RandomListNode, RandomListNode> map = new HashMap<>(); RandomListNode newHead = new RandomListNode(head.label); map.put(head, newHead); RandomListNode node = head.next; RandomListNode prevCopy = newHead; while (node != null) { RandomListNode curCopy = new RandomListNode(node.label); map.put(node, curCopy); prevCopy.next = curCopy; prevCopy = curCopy; node = node.next; } node = head; while(node!=null) { RandomListNode nodeCopy = map.get(node); RandomListNode randomCopy = map.get(node.random); if (randomCopy != null) { nodeCopy.random = randomCopy; } node = node.next; } return newHead; // if (head == null) { // return null; // } // Map<RandomListNode, RandomListNode> map = new HashMap<>(); // RandomListNode copyNode = new RandomListNode(head.label); // map.put(head, copyNode); // RandomListNode node = head.next; // RandomListNode prevCopy = copyNode; // while (node != null) { // RandomListNode curCopy = new RandomListNode(node.label); // map.put(node, curCopy); // prevCopy.next = curCopy; // prevCopy = curCopy; // node = node.next; // } // node = head; // while (node != null) { // RandomListNode nodeCopy = map.get(node); // RandomListNode nodeRandom = map.get(node.random); // if (nodeRandom != null) { // RandomListNode nodeRandomCopy = map.get(nodeRandom); // nodeCopy.random = nodeRandomCopy; // } // node = node.next; // } // //return map.get(head); // return copyNode; }}
0 0
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Preconditions优雅的检验参数
- linux环境下新建weblogic域
- 用Redis的set指令实现锁
- SevletContext
- ASCII控制字符和ASCII可显示字符
- Copy List with Random Pointer
- Activity启动模式
- UNIX网络编程笔记(7)—名字与地址转换
- 基于正则表达式的数据抓包
- JAVA——管道流
- Java Web基础学习(一)
- Git & Github建立与使用
- Java内存区域与内存溢出异常
- C++ Primer Plus 第六版_编程练习(1)(Chapter_two 1-7)