Leetcode Copy List with Random Pointer 拷贝链表
来源:互联网 发布:滇红 知乎 编辑:程序博客网 时间:2024/06/16 19:30
题目:
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.
分析:
1. 遍历链表,拷贝链表的每一个节点,并用HashMap记录原来的节点和拷贝的节点的对应关系。
2. 再次遍历链表,把拷贝的节点连接起来,并加上random节点的关系。
Java代码实现:
/** * 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 head; HashMap<RandomListNode, RandomListNode> nodes = new HashMap<RandomListNode, RandomListNode>(); RandomListNode node = head; RandomListNode newHead = new RandomListNode(head.label); nodes.put(node, newHead); node = node.next; while(node!=null) { nodes.put(node, new RandomListNode(node.label)); node = node.next; } node = head; RandomListNode temp = newHead; temp.random = nodes.get(node.random); while(node!=null) { temp.next = nodes.get(node.next); node = node.next; temp = temp.next; if(temp!=null) temp.random = nodes.get(node.random); } return newHead; }}
0 0
- Leetcode Copy List with Random Pointer 拷贝链表
- LeetCode(Copy List with Random Pointer) 复杂链表的深拷贝
- [leetcode][list] Copy List with Random Pointer
- Leetcode: Copy List with Random Pointer
- LeetCode: Copy List with Random Pointer
- [LeetCode] Copy List with Random Pointer
- [leetcode]Copy List with Random Pointer
- LeetCode:Copy List with Random Pointer
- leetcode Copy List with Random Pointer
- LeetCode:Copy List with Random Pointer
- LeetCode题解:Copy List with Random Pointer
- [LeetCode]Copy List with Random Pointer
- leetcode Copy List with Random Pointer
- leetcode-Copy List with Random Pointer
- Leetcode: Copy List with Random Pointer
- LeetCode | Copy List with Random Pointer
- [LeetCode] Copy List with Random Pointer
- LeetCode OJ:Copy List with Random Pointer
- Android 隐藏虚拟键盘,改变回车的文本
- startActivityForResult
- excel将多列数据以连接符‘*’连接成一列
- mysql 获取当前日期及格式化
- 在Linux/Mac下面删除所有的.svn文件
- Leetcode Copy List with Random Pointer 拷贝链表
- Android 之Activity启动模式(二)之 Intent的Flag属性
- 如何让DIV始终保持在屏幕中间
- 二叉树的非递归遍历(栈)
- Python 循环及函数range的用法
- can not be represented as java.sql.Timestamp
- callback site:blog.csdn.net/amazing_alex/article
- Altium Designer 使用sheetsymbol 绘制重复重复使用的模块
- CentOS利用iso镜像做本地yum源-make等命令无权限解决