返回介绍

55.链表中环的入口结点

发布于 2023-08-30 21:54:39 字数 741 浏览 0 评论 0 收藏 0

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。

思路:快慢指针。

  1. 初始化:快指针fast指向头结点, 慢指针slow指向头结点

  2. 让fast一次走两步, slow一次走一步,第一次相遇在C处,停止

  3. 然后让fast指向头结点,slow原地不动,让后fast,slow每次走一步,当再次相遇,就是入口结点。

     public class Solution {
     
       public ListNode EntryNodeOfLoop(ListNode pHead)
       {
         if(pHead == null || pHead.next == null || pHead.next.next == null) return null;
         ListNode p1 = pHead.next, p2 = pHead.next.next;
         while(p1 != p2){
           if(p1.next == null || p2.next.next == null) return null;
           p1 = p1.next;
           p2 = p2.next.next;
         }
         p2 = pHead;
         while(p1 != p2){
           p1 = p1.next;
           p2 = p2.next;
         }
         return p2;
       }
     }
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文