设为首页 加入收藏

TOP

Leetcode - CopyWithRandomList
2015-07-20 17:32:02 来源: 作者: 【 】 浏览:2
Tags:Leetcode CopyWithRandomList

Algorithm: Iterate and copy the original list first. For the random pointer, just copy the value from the original list first. And use a map to store each node's old address and its corresponding new address. After the iteration, we can replace the value of the random pointer based on the map we get.


Mistakes I make:

(1) Beware when head == null.

(2) Forget during the iteration: node = node.next;


public class Solution {
    public RandomListNode copyRandomList(RandomListNode head) {
        if(head == null)
    		return null;
    	RandomListNode newHead = new RandomListNode(head.label);
    	newHead.random = head.random;
    	RandomListNode node = newHead;
    	Map
  
    addrRef = new HashMap
   
    (); addrRef.put(head, node); head = head.next; while(head != null) { RandomListNode tnode = new RandomListNode(head.label); tnode.random = head.random; node.next = tnode; addrRef.put(head, tnode); head = head.next; node = tnode; } node = newHead; while(node != null) { node.random = addrRef.get(node.random); node = node.next; } return newHead; } }
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Effective C++ 34 下一篇ZOJ 1698 (最大流入门)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)