138.Copy List with Random Pointer 复制带有随机指针的链表 https://leetcode.com/problems/copy-list-with-random-pointer/ 题目:给出一个链表,使得每个节点包含一个额外的随机指针,该指针可以指向列表中
138. Copy List with Random Pointer 复制带有随机指针的链表
https://leetcode.com/problems/copy-list-with-random-pointer/
题目:给出一个链表,使得每个节点包含一个额外的随机指针,该指针可以指向列表中的任何节点或NULL。
思路:需要复制的链表带有随机指针,每一个节点都随机指向任意一个节点或指向null,第一次遍历生成所有新节点,同时建立一个原节点和新节点的 HashMap,第二次遍历给随机指针赋值。
141. Linked List Cycle 有环的链表
https://leetcode.com/problems/linked-list-cycle/
题目:给定一个链表,确定其中是否有一个循环。为了表示给定链表中的一个循环,我们使用一个整数pos,它表示尾连接到的链表中的位置(0索引)。如果pos是 -1,则链接列表中没有循环。
思路:采用快慢指针,快指针每次移动两步,慢指针每次移动一步,如果快慢指针汇合,则说明环存在,否则不存在。
142. Linked List Cycle II 有环的链表 II
https://leetcode.com/problems/linked-list-cycle-ii/
题目:给定一个链表,返回环开始的节点。如果没有环,则返回null。为了表示给定链表中的一个循环,我们使用一个整数pos,它表示尾连接到的链表中的位置(0索引)。如果pos是 -1,则链接列表中没有循环。
思路:同样采用快慢指针,和141不同的是在快慢指针相等时,新建一个节点指向head,该节点和慢指针同时移动一步,最终汇合的地方则为环开始的节点。