- 浏览: 183808 次
- 性别:
- 来自: 济南
文章分类
最新评论
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.
题目中给定了一个链表,链表中的节点类有三个成员,label,next,random,其中label和next和普通链表中的一样,多了一个random,random指针指向链表中的任意一个元素或者指向空,要求我们复制这个链表。这道题目和Clone Graph很类似。我们都需要借助一个哈希表来存储新建节点和老节点之间的对应关系,然后在对链表扫描一遍,如果当前节点的random指针不为空,那么这个节点对应的copy节点的random要指向相应的节点,这些对应的关系都是在哈希表找到的。代码如下:
Return a deep copy of the list.
题目中给定了一个链表,链表中的节点类有三个成员,label,next,random,其中label和next和普通链表中的一样,多了一个random,random指针指向链表中的任意一个元素或者指向空,要求我们复制这个链表。这道题目和Clone Graph很类似。我们都需要借助一个哈希表来存储新建节点和老节点之间的对应关系,然后在对链表扫描一遍,如果当前节点的random指针不为空,那么这个节点对应的copy节点的random要指向相应的节点,这些对应的关系都是在哈希表找到的。代码如下:
/** * Definition for singly-linked list with a random pointer. * class RandomListNode { * int label; * RandomListNode next, random; * RandomListNode(int x) { this.label = x; } * }; */ public class Solution { public RandomListNode copyRandomList(RandomListNode head) { HashMap<RandomListNode, RandomListNode> hm = new HashMap<RandomListNode, RandomListNode>(); if(head == null) return head; RandomListNode copy = new RandomListNode(head.label); hm.put(head, copy); RandomListNode node = copy; RandomListNode helper = head; while(head.next != null) { copy.next = new RandomListNode(head.next.label); hm.put(head.next, copy.next); head = head.next; copy = copy.next; } while(helper != null) { if(helper.random != null) { hm.get(helper).random = hm.get(helper.random); } helper = helper.next; } return node; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 265Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 267You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 384Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 375Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 500Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 563Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 475Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 664Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 469The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 430Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 575Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 581Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 426All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 898Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 930Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 677Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 845Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 783You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 708For a undirected graph with tre ...
相关推荐
python python_leetcode题解之138_Copy_List_with_Random_Pointer
javascript js_leetcode题解之138-copy-list-with-random-pointer.js
dna匹配 leetcode leetcode刷题--C++ 哈希表 Longest Substring ...Pointer 单链表 map Max Points on a Line 斜率 map, int> Fraction to Recurring Decimal map long long 正负号 Repeated DNA S
7. **Copy List with Random Pointer**:这是一个涉及链表和深度复制的复杂问题。需要理解链表结构,并能创建一个新的链表,同时保留原链表的随机指针。 8. **Word Ladder II**:这是一个词链问题,涉及到广度优先...
12. **复杂链表的复制**(Copy List with Random Pointer) - 知识点:链表,深度优先搜索 - 解题思路:创建新链表,通过遍历原链表,复制节点并更新随机指针。可以使用DFS或BFS解决。 13. **平衡二叉树**...
- **Copy List with Random Pointer**:复制带有随机指针的链表。 8. **数学(Math)**: - **Reverse Integer**:反转一个整数。 9. **字符串(String)**: - **Add Binary**:将两个二进制数相加。 - **...
leetcode中文版 LeetCode/Cpp ...138.Copy List with Random Pointer LeetCode 142.Linked List Cycle II(solve1) LeetCode 142.Linked List Cycle II(solve2) LeetCode 160.Intersection of Two Linke
24. Copy List with Random Pointer:复制含有随机指针的链表。 四、二叉树 25. Validate Binary Search Tree:验证二叉搜索树的合法性。 26. Maximum Depth of Binary Tree:二叉树的最大深度。 27. Minimum Depth...
24. Copy List with Random Pointer:复制带有随机指针的链表。 【二叉树】 25. Validate Binary Search Tree:验证二叉搜索树。 26. Maximum Depth of Binary Tree:计算二叉树的最大深度。 27. Minimum Depth of ...
- 有难度的链表题目则要求合并K个有序链表(Merge K Sorted Lists)、复制带有随机指针的链表(Copy List with Random Pointer)。 **二叉树(Binary Tree)** 二叉树是另一个重要的数据结构。LeetCode的题目涵盖了...
- **复制带随机指针的链表(Copy List with Random Pointer)**: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点,复制这个链表。 ##### 数学(Math) - **反转整数...
- **2.2.10 Copy List with Random Pointer** - 复制一个带随机指针的链表。 - 实现思路:先复制链表中的每个节点,并将其插入到原节点后面,然后再处理随机指针。 #### 五、编写规范 - **单一文件编码**:由于...
Copy List with Random Pointer, Populating Next Right Pointers in Each Node I && II) PIE (未录入) CC150 (未录入) EPI (未录入) 每一个题库对应problems路径下的一个文件夹,每一个题目对应相应题库下的一个...
* [Linked List](https://github.com/kamyu104/LeetCode#linked-list) * [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap]...
**1.10 Copy List with Random Pointer (138)** - **问题描述**:给定一个带有随机指针的链表,复制该链表。 - **解题思路**: - 遍历链表,在每个节点后面插入一个新节点。 - 再次遍历链表,更新新节点的随机...
多线程 leetcode 前言 每天刷点leetcode,基于java语言实现。...Copy List with Random Pointer Building H2O Fizz Buzz Multithreaded hard Merge k Sorted Lists Reverse Nodes in k-Group Trapping Rain Water
random_index:随机指针指向的节点的索引(范围从0到n-1),如果不指向任何节点,则为null。 从过去 : 好吧,我们已经知道如何克隆一个链表。 只需遍历链表,创建新节点并将前一个节点与当前节点连接起来,然后更新...
preorder-traversal链表reorder-list链表linked-list-cycle-ii链表linked-list-cycle动态规划word-break-ii动态规划word-break链表copy-list-with-random-pointer复杂度single-number-ii复杂度single-number动态规划