zoukankan      html  css  js  c++  java
  • Leetcode

    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<RandomListNode,RandomListNode> addrRef = new HashMap<RandomListNode,RandomListNode>();
        	
        	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;
        	
        }
    }


  • 相关阅读:
    构建之法阅读笔记05
    构建之法阅读笔记04
    大二上学期软件工程概论学习进度表(第十二周)
    构建之法阅读笔记03
    四则运算二
    GCD
    Category的使用
    适配6 、6P 来源互联网
    UIView阴影和圆角的关系
    NSSet类型 以及与NSArray区别
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6763904.html
Copyright © 2011-2022 走看看