欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

142. Linked List Cycle II

发布时间:2023/12/1 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 142. Linked List Cycle II 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

Follow up:
Can you solve it without using extra space?

Craking interview书上原题,快慢指针,话题较简单说明。

/**
* Definition for singly-linked list.
* class ListNode {
*    int val;
*    ListNode next;
*    ListNode(int x) {
*      val = x;
*      next = null;
*    }
* }
*/
public class Solution {
  public ListNode detectCycle(ListNode head) {
    // IMPORTANT: Please reset any member data you declared, as
    // the same Solution instance will be reused for each test case.
    ListNode slow = head;
    ListNode fast = head;
    while(fast != null && fast.next != null){
      slow = slow.next;
      fast = fast.next.next;
      if(slow == fast) break;
    }
    if(fast == null || fast.next == null) {
      return null;
    }
    slow = head;
    while(slow != fast){
      slow = slow.next;
      fast = fast.next;
    }
    return slow;
  }
}

转载于:https://www.cnblogs.com/shini/p/4436578.html

总结

以上是生活随笔为你收集整理的142. Linked List Cycle II的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。