首页 > 其他分享 >(链表)07-链表中环的入口结点

(链表)07-链表中环的入口结点

时间:2023-11-15 23:04:05浏览次数:34  
标签:结点 slow ListNode 07 fast next 链表 null

 1 /*
 2  public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }
10 */
11 public class Solution {
12 
13     public ListNode EntryNodeOfLoop(ListNode pHead) {
14         // 快指针从头节点开始遍历
15         ListNode fast = pHead;
16         // 慢指针从相遇位置开始遍历
17         ListNode slow = hasCycle(pHead);
18         // 没有环
19         if (slow == null) {
20             return null;
21         }
22         // 有环则相遇位置就是环的入口
23         while(fast != slow) {
24             fast = fast.next;
25             slow = slow.next;
26         }
27         return fast;
28     }
29 
30     public ListNode hasCycle(ListNode head) {
31         // 定义临时变量-快慢两个指针
32         ListNode fast = head;
33         ListNode slow = head;
34         // 循环链表
35         while (fast != null && fast.next != null) {
36             // 快指针走两步
37             fast = fast.next.next;
38             // 慢指针走一步
39             slow = slow.next;
40             // 快慢指针相遇则说明有环-返回相遇位置的节点
41             if (fast == slow) {
42                 return fast;
43             }
44         }
45         // 链表遍历到尾节点说明没有环
46         return null;
47     }
48 }

 

标签:结点,slow,ListNode,07,fast,next,链表,null
From: https://www.cnblogs.com/StringBuilder/p/17835067.html

相关文章

  • (链表)13-判断一个链表是否为回文结构
    1importjava.util.*;23/*4*publicclassListNode{5*intval;6*ListNodenext=null;7*}8*/9publicclassSolution{10/**11*12*@paramheadListNode类thehead13*@returnbool布尔型14*/15......
  • (链表)06-判断链表中是否有环
    1/**2*Definitionforsingly-linkedlist.3*classListNode{4*intval;5*ListNodenext;6*ListNode(intx){7*val=x;8*next=null;9*}10*}11*/12publicclassSolution{13p......
  • 牛客题霸 BM1 反转链表
    BM1 反转链表  简单  通过率:38.76%  时间限制:1秒  空间限制:256M知识点链表描述给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 数据范围: 0\leqn\leq10000≤n≤1000要求:空间复杂度......
  • [ARC107F] Sum of Abs 题解
    题意给定一个\(N\)个点,\(M\)条边的简单无向图,每个节点有两个值\(A_i\)和\(B_i\)。现对于每个节点,均可以选择花费\(A_i\)的代价将其删去或保留节点。若一个节点被删除,那么所有与其向连的边也会被删除。定义一个极大联通块的权值为联通块内所有节点的\(B_i\)的和的绝对......
  • day07 数据类型(下)
    day06数据类型(下)常见的数据类型:int,整数类型(整形)bool,布尔类型str,字符串类型list,列表类型tuple,元组类型dict,字典类型set,集合类型float,浮点类型(浮点型)目标:掌握字典、集合、浮点类型相关知识。课程概要:set集合,一个不允许重复重复&可变类型(元素可哈希)。dict字典,一个......
  • ATS3607D 环境搭建
    1.编译ninjagitclonegit://github.com/ninja-build/ninja.git&&cdninjagitcheckoutrelease//打开vs2015x86x64兼容工具pythonconfigure.py--bootstrap//第一个错误:fatalerrorC1902:程序数据库管理器不匹配D:\ProgramTools\vs2015\VC\bin和D:\Program......
  • IOI 2007 Miners
    三种食物,两个矿地。每个矿地会记得最靠近的三种食物,每一次给他们一个新的食物时,答案会加上有多个不同的食物。 求答案的最大值。 很简单的dp: dp[i][a1][a2][b1][b2]表示当前已经分了i个食物,a的上两个食物为a1,a2,b的上两个食物为b1,b2。那么转移状态为:让s[i]表示当......
  • (链表)05-合并K个已排序的链表
    1importjava.util.*;23/**4*Definitionforsingly-linkedlist.5*publicclassListNode{6*intval;7*ListNodenext;8*ListNode(intx){9*val=x;10*next=null;11*}12*}13*/1......
  • (链表)12-单链表的排序
    1importjava.util.*;23/*4*publicclassListNode{5*intval;6*ListNodenext=null;7*publicListNode(intval){8*this.val=val;9*}10*}11*/12publicclassSolution{13/**14*@paramhead......
  • Codeforces Round 907 (Div. 2)
    \(A.SortingwithTwos\)https://codeforces.com/contest/1891/submission/232689614\(B.DejaVu\)https://codeforces.com/contest/1891/submission/232690141\(C.SmiloandMonsters\)https://codeforces.com/contest/1891/submission/232691988\(D.Suspic......