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


  • 相关阅读:
    client offset screen 的区别
    js中const,var,let区别
    jquery的选择器
    gulp
    JS 实现图片放大效果
    html单个标签实现跑马灯效果
    前端之HTML知识点整理
    各种纯css图标
    防止反复点击的思路
    .NET Memcached Client 扩展获取所有缓存Key
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6763904.html
Copyright © 2011-2022 走看看