138. Copy List with Random Pointer
来源:互联网 发布:战地之王透视源码 编辑:程序博客网 时间:2024/06/06 18:05
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.
这道题的意思是让完全拷贝一个链表。
方法一:第一次遍历用hashmap存对应的节点,第二次遍历存储相应的next和random节点。代码如下:
/** * 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) { HashMap<RandomListNode, RandomListNode> map = new HashMap<RandomListNode, RandomListNode>(); RandomListNode tempNode = head; while (tempNode != null) { map.put(tempNode, new RandomListNode(tempNode.label)); tempNode = tempNode.next; } tempNode = head; while (tempNode != null) { map.get(tempNode).next = map.get(tempNode.next); map.get(tempNode).random = map.get(tempNode.random); tempNode = tempNode.next; } return map.get(head); }}方法二:在每个节点后面插入一个一模一样的节点,再把这两个链表分开。代码如下:
/** * 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) { RandomListNode cur = head, next; while(cur != null) { next = cur.next; RandomListNode node = new RandomListNode(cur.label); node.next = next; cur.next = node; cur = next; } cur = head; while(cur != null) { if (cur.random != null) cur.next.random = cur.random.next; cur = cur.next.next; } cur = head; RandomListNode reshead = new RandomListNode(0); RandomListNode temp = reshead, tempNext; while (cur != null) { next = cur.next.next; tempNext = cur.next; temp.next = tempNext; temp = tempNext; cur.next = next; cur = next; } return reshead.next; }}
0 0
- 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- [Leetcode] 138. Copy List with Random Pointer
- 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- [leetcode] 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- 138. Copy List with Random Pointer
- leetcode.138. Copy List with Random Pointer
- 138. Copy List with Random Pointer
- LeetCode-138.Copy List with Random Pointer
- Leetcode 138. Copy List with Random Pointer
- [Leetcode]138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- 138. Copy List with Random Pointer
- [LeetCode] 138. Copy List with Random Pointer
- poj1250 Tanning Salon
- MLlib分类算法实战演练--Spark学习(机器学习)
- 各种DP的总结
- Markdown写作语法
- 关于 结构体 的使用
- 138. Copy List with Random Pointer
- MarkdownPad注册码
- 批量卸载windows程序
- .html(),.text()和.val()的使用
- Snow Footprints
- 20170306-java
- 超越时代的智商、和横穿社会的苦逼
- CSDN客户端问题
- 深入 Spring 系列之静态资源处理