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;
        	
        }
    }


  • 相关阅读:
    转载——rdis安装yum版本
    Lc28_strStr kmp字符串匹配
    关于 哈希的总结
    Lc344_反转字符串
    Lc383_赎金信
    Lc454_四数相加 II
    Lc1_俩数之和
    推荐4款个人珍藏的IDEA插件!帮你写出不那么差的代码
    ZUC-生成随机序列
    移位运算
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6763904.html
Copyright © 2011-2022 走看看