首页 > 其他分享 >142.环形链表 II

142.环形链表 II

时间:2022-11-10 18:23:27浏览次数:41  
标签:II head slow 142 next 链表 return null

给定一个链表的头节点  head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

 

 

输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

 
输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。

提示:

  • 链表中节点的数目范围在范围 [0, 104] 内
  • -105 <= Node.val <= 105
  • pos 的值为 -1 或者链表中的一个有效索引

方法一:哈希表

时间复杂度:O(N)

空间复杂度:O(N)

 1 /**
 2  * Definition for singly-linked list.
 3  * function ListNode(val) {
 4  *     this.val = val;
 5  *     this.next = null;
 6  * }
 7  */
 8 
 9 /**
10  * @param {ListNode} head
11  * @return {ListNode}
12  */
13 var detectCycle = function(head) {
14     const visited = new Set();
15     while (head !== null) {
16         if (visited !== null) {
17             return head;
18         }
19         visited.add(head);
20         head = head.next;
21     }
22     return null;
23 }

方法二:快慢指针

时间复杂度:O(N)

空间复杂度:O(1)

 1 /**
 2  * Definition for singly-linked list.
 3  * function ListNode(val) {
 4  *     this.val = val;
 5  *     this.next = null;
 6  * }
 7  */
 8 /**
 9  * @param {ListNode} head
10  * @return {ListNode}
11  */
12 var detectCycle = function(head) {
13     if (head === null) {
14         return null;
15     }
16     let slow = head,
17         fast = head;
18     while (fast !== null) {
19         slow = slow.next;
20         if (fast.next !== null) {
21             fast = fast.next.next;
22         } else {
23             return null;
24         }
25         if (fast === slow) {
26             let ptr = head;
27             while (ptr !== slow) {
28                 ptr = ptr.next;
29                 slow = slow.next;
30             }
31             return ptr;
32         }
33     }
34     return null;
35 }

 

标签:II,head,slow,142,next,链表,return,null
From: https://www.cnblogs.com/icyyyy/p/16877982.html

相关文章

  • 40. 组合总和 II
    思路为什么会出现重复?以{1,1,7}和target=8为例,如果不选0号位置的1,那么1号位置的1就也不应该选否则0号位置的1和7构成一个结果在不选0号位置时,1号位置的1和7又构成一个......
  • HDU 2216 Game III
    ProblemDescriptionZjtandSarawilltakepartinagame,namedGameIII.ZjtandSarawillbeinamaze,andZjtmustfindSara.Therearesomestrang......
  • The 2022 ICPC Asia Regionals Online Contest (II)
    一直没补,把之前的粘贴过来EAnInterestingSequence 为使数组和小,并且gcd=1,我们添加2,3,,找到第一个不整除k的质数,然后后面放2,3,判断先放2还是3JAGameaboutIncrea......
  • 454. 四数相加 II
    454.四数相加II给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0<=i,j,k,l<nnums1[i]+nums2......
  • 代码随想录day50 | 123.买卖股票的最佳时机III 188. 买卖股票的最佳时机 IV
    123.买卖股票的最佳时机III题目|文章思路相比于122.买卖股票的最佳时机III,这道题多了一道限制,就是买卖次数的限制,我的想法是通过增加一维来实现。文章中给出的方法则......
  • SPOJ LCS2 Longest Common Substring II
    DescriptionAstringisfinitesequenceofcharactersoveranon-emptyfinitesetΣ.Inthisproblem,Σisthesetoflowercaseletters.Substring,alsocalled......
  • ACdream 1427 Nice Sequence
    Description    Letusconsiderthesequencea1, a2,..., an ofnon-negativeintegernumbers.Denoteasci,j thenumber ofoccurrencesofthenumber......
  • ACdream 1429 Rectangular Polygon
    Description   Arectangularpolygonisapolygonwhoseedgesareallparalleltothecoordinateaxes.Thepolygon musthaveasingle,non-intersecting......
  • 基础(服务寄宿在IIS中)
    1、配置服务器IIS   安装好IIS相关服务,确保网站能够启动   建立网站2、可能出现的问题(安装了最新版的ASP.NET4.0)未能从程序集“System.ServiceModel,Version......
  • 代码随想录day48 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III
    198.打家劫舍题目|文章思路数组以及下标含义dp[j]:当偷到第j家时所能获得的最多的金钱递推公式dp[j]=max(dp[j-1],dp[j-2]+nums[i])当偷到第j家时,如果偷......