zoukankan      html  css  js  c++  java
  • 138. Copy List with Random Pointer

    package LeetCode_138
    
    /**
     * 138. Copy List with Random Pointer
     * https://leetcode.com/problems/copy-list-with-random-pointer/description/
     *
     * A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
    Return a deep copy of the list.
    The Linked List is represented in the input/output as a list of n nodes. Each node is represented as a pair of [val, random_index] where:
    val: an integer representing Node.val
    random_index: the index of the node (range from 0 to n-1) where random pointer points to, or null if it does not point to any node.
     * */
    
    class Node(var `val`: Int) {
        var next: Node? = null
        var random: Node? = null
    }
    
    class Solution {
        /*
        * solution 1:HashMap, Time complexity:O(n), Space complexity:O(n)
        * */
        fun copyRandomList(node: Node?): Node? {
            val map = HashMap<Node, Node>()
            //handle node copy
            var cur = node
            while (cur != null) {
                map.put(cur, Node(cur.`val`))
                cur = cur.next
            }
            //handler node's next and random
            var curNode = node
            while (curNode != null) {
                if (curNode.next!=null) {
                    map.get(curNode)?.next = map.get(curNode.next!!)
                }
                if (curNode.random!=null) {
                    map.get(curNode)?.random = map.get(curNode.random!!)
                }
                curNode = curNode.next
            }
            return map.get(node!!)
        }
    }
  • 相关阅读:
    【java基础】方法2
    【Java基础】方法
    [java基础]数组
    [Java基础]循环结构3
    [java基础]循环结构2
    [java基础]循环结构1
    [java基础]分支结构(2)
    mybatis-config.xml简单笔记
    applicationContext.xml简单笔记
    spring-servlet.xml简单示例
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13290781.html
Copyright © 2011-2022 走看看