zoukankan      html  css  js  c++  java
  • 剑指offer 55.链表中环的入口结点

    剑指offer 55.链表中环的入口结点

    题目

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

    思路

    现在成了数学题了,首先设快慢两点都在开头,快结点一下走两步,慢结点一下走一步,当快结点追上慢结点就代表存在环。
    当二者相遇,快结点回到开头,慢结点继续走,当二者再次相遇时,结点就为环的入口结点。记得要考虑到没有下一个结点的可能性。
    数学问题我就不证明了,画一个图就能理解了。

    代码

      public class ListNode {
    
        int val;
        ListNode next = null;
    
        ListNode(int val) {
          this.val = val;
        }
      }
    
      public ListNode EntryNodeOfLoop(ListNode pHead) {
        ListNode fast = pHead;
        ListNode slow = pHead;
        while (fast != null && fast.next != null) {
          fast = fast.next.next;
          slow = slow.next;
          if (fast == slow) {
            break;
          }
        }
        if (fast == null || fast.next == null) {
          return null;
        }
        fast = pHead;
        while (fast != slow) {
          fast = fast.next;
          slow = slow.next;
        }
        return fast;
      }
    
  • 相关阅读:
    shell 中"${b2}" and "${b:2}"
    关于 libpcap的安装
    ubuntu adsl 上网
    2011.1.18 运算符优先级
    Tail Queues
    fd_set struct
    读取和修改操作array 配置文件的方法
    smarty调试方法
    一个CURL例子
    cakephp数据库事务transactions
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12422982.html
Copyright © 2011-2022 走看看