LeetCode-链表

Posted nomad1c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-链表相关的知识,希望对你有一定的参考价值。

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,该节点和慢指针同时移动一步,最终汇合的地方则为环开始的节点。

以上是关于LeetCode-链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-203-移除链表元素

LeetCode-021-合并两个有序链表

链表 - Leetcode 2 & Leetcode 23

链表 - Leetcode 2 & Leetcode 23

LeetCode-160-相交链表

[算法] leetcode单链表相关题目详解