leetcode(十一)Copy List with Random Pointer
来源:互联网 发布:sha1rsa 是什么算法 编辑:程序博客网 时间:2024/06/06 20:17
copyright:leetcode
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.
/** * 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;//duplicateRandomListNode dhead = new RandomListNode(head.label);RandomListNode pd = dhead, ph = head;//assignment of nextfor(;ph != null;ph = ph.next){if(ph.next != null){pd.next = new RandomListNode(ph.next.label);pd = pd.next;}else{pd.next = null;}//System.out.println("!!!");//}//assignment of random, all members already in the ph listpd = dhead; ph = head;for(;pd != null;pd = pd.next, ph = ph.next){if(ph.random != null){pd.random = findRandom(dhead, ph.random);}else{pd.random = null;}//System.out.println("$$$");//}return dhead; }private RandomListNode findRandom(RandomListNode dhead, RandomListNode target){RandomListNode p = dhead;for(;p != null;p = p.next){//System.out.println("###");//if(target.label == p.label)return p;}return null;}}
原理:1.先不管random,通过建立next建立单向链表dhead,之后random指向的节点肯定在dhead中,查找连接即可。
0 0
- 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
- LeetCode(138)Copy List with Random Pointer
- cvs 使用方法
- 使用过的jvm参数
- The "Double-Checked Locking is Broken" Declaration
- 【Android】开发优化之—— 一般总结
- linux中特殊的设备(/dev/zeo,/dev/null,/dev/unrandom,/dev/random)
- leetcode(十一)Copy List with Random Pointer
- leetcode->Evaluate Reverse Polish Notation
- 开通博客--for interest
- 铁矿石战术方面的特点,以菜的
- Agile
- C++和JNI的数据转换
- 博客说明
- Android_OutOfMemoryError
- adb shell 命令总结