leetcode 149: Copy List with Random Pointer
2014-06-26 09:05
441 查看
Copy List with Random Pointer
Total Accepted: 12884Total Submissions: 56931
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.
w/o extra space.
/** * 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; RandomListNode p = head; while(p!=null) { RandomListNode np = new RandomListNode(p.label); np.next = p.next; p.next = np; p = np.next; } p = head; while(p!=null) { p.next.random = p.random==null ? null : p.random.next; p = p.next.next; } RandomListNode nhead = head.next; p = head; RandomListNode q = nhead; while(p!=null) { // q.next !=null won't work, since it won't deal with one node situation. p.next = q.next; if(q.next!=null) q.next = q.next.next; p = p.next; q = q.next; } return nhead; } }
w/ extra space.
/** * 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 p = head; while(p != null) { RandomListNode newp = new RandomListNode(p.label); map.put(p, newp); p = p.next; } // RandomListNode newHead = map.get(head); p = head; while(p!=null) { RandomListNode q = map.get(p); q.next = map.get( p.next ); q.random = map.get(p.random); p = p.next; } return map.get(head); } }
相关文章推荐
- Copy List with Random Pointer 复制有随机指针的链表@LeetCode
- [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, Solution
- 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
- Copy List with Random Pointer [LeetCode]
- leetcode -- Copy List with Random Pointer
- LeetCode:Copy List with Random Pointer
- LeetCode(138)Copy List with Random Pointer
- [LeetCode]Copy List with Random Pointer
- leetcode - Copy List with Random Pointer