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


  • 相关阅读:
    个人冲刺6
    个人冲刺5
    个人冲刺4
    学习进度10
    个人冲刺3
    个人冲刺2
    单词统计
    返回一个整数数组中最大子数组的和
    JavaWeb_JavaEE_命名规则 转载http://www.cnblogs.com/xwdreamer/
    软件工程作业(四则运算web界面实现)-3
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6763904.html
Copyright © 2011-2022 走看看