首页 > 代码库 > 链表中环的入口结点
链表中环的入口结点
题目
一个链表中包含环,请找出该链表的环的入口结点。
分析
首先检查该链表是否为环,设置一个快指针fast,每次走两步,一个慢指针slow,每次走一步。若fast==null或fast.next==null,表示不存在环;当fast==slow时,存在环。
将fast指向链表头,每次走一步,slow还是每次走一步,当fast与slow相遇时,即为环的入口结点。
代码
1 public ListNode EntryNodeOfLoop(ListNode pHead){ 2 if(pHead==null) 3 return null; 4 ListNode slow = pHead, fast = pHead; 5 while(true){ 6 if(fast==null) 7 return null; 8 slow = slow.next; 9 fast = fast.next.next; 10 if(slow==fast) 11 break; 12 } 13 fast = pHead; 14 while(fast!=slow){ 15 fast = fast.next; 16 slow = slow.next; 17 } 18 return fast; 19 }
链表中环的入口结点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。