zoukankan      html  css  js  c++  java
  • leetcode刷题笔记一百三十八题 复制带随机指针的链表

    leetcode刷题笔记一百三十八题 复制带随机指针的链表

    源地址:138. 复制带随机指针的链表

    问题描述:

    给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。

    要求返回这个链表的 深拷贝。

    我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:

    val:一个表示 Node.val 的整数。
    random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。

    输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
    输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

    //138题的思路主要参考了133题 克隆图的DFS深拷贝方法
    /**
     * Definition for a Node.
     * class Node(var _value: Int) {
     *   var value: Int = _value
     *   var next: Node = null
     *   var random: Node = null
     * }
     */
    
    import scala.collection.mutable
    object Solution {
        def copyRandomList(head: Node): Node = {
            if (head == null) return null
            val visited =  mutable.HashMap.empty[Node, Node]
    
            def helper(node: Node, visited: mutable.HashMap[Node, Node]): Node = {
                if (visited.contains(node)) return visited(node)
            
                val cloneNode = new Node(node.value)
                visited.put(node, cloneNode)
    
                if (node.next != null) cloneNode.next = helper(node.next, visited)
                if (node.random != null) cloneNode.random = helper(node.random, visited)
                return cloneNode
            }
            helper(head, visited)
        }
    }
    
  • 相关阅读:
    Android app 简单的电话拨号器
    JavaWEB开发中的/到底代表什么
    springmvc json
    ForeignKey.on_delete
    django 实现指定文件合并成压缩文件下载
    常用SQL的优化
    数据库 两个简单实用的表级优化方法
    一天只能触发一次操作
    Ajax 生成流文件下载 以及复选框的实现
    django Q和F查询
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13532514.html
Copyright © 2011-2022 走看看