zoukankan      html  css  js  c++  java
  • 剑指offer——判断链表中是否有环

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

    解题思路:

    //左神讲的
    //先说个定理:两个指针一个fast、一个slow同时从一个链表的头部出发
    //fast一次走2步,slow一次走一步,如果该链表有环,两个指针必然在环内相遇
    //此时只需要把其中的一个指针重新指向链表头部,另一个不变(还在环内),
    //这次两个指针一次走一步,相遇的地方就是入口节点。
    //这个定理可以自己去网上看看证明。
     
     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         ListNode slow = pHead;
    17         
    18         while(fast!=null && fast.next!=null)
    19         {
    20             fast = fast.next.next;
    21             slow =slow.next;
    22             
    23             if(fast ==slow)
    24                 break;
    25         }
    26         
    27         if(fast==null || fast.next==null)
    28             return null;
    29         fast = pHead;
    30         
    31         while(fast!=slow)
    32         {
    33             fast =fast.next;
    34             slow = slow.next;
    35         }
    36         return fast;
    37         
    38     }
    39 }
  • 相关阅读:
    Android studio 中国的垃圾问题解决
    实现一个简单的boot
    代理下载android4.4源代码
    《程序员在第一季度追姐姐的书》——提升自己的形象气质
    第46周四
    Spring单例与线程安全小结
    2014第46周二
    第46周一
    第45周日
    第45周六
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10896275.html
Copyright © 2011-2022 走看看