码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 142 环形链表II

时间:2020-10-10 17:15:32      阅读:15      评论:0      收藏:0      [点我收藏+]

标签:指针   pre   leetcode   etc   ret   使用   节点   lang   while   

LeetCode 142 环形链表II

问题描述:
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

快慢指针

  • 快指针每次走两步、慢指针每次走一步
  • 若链表有环,则两指针必然相遇;否则快指针首先指向null
  • 两指针相遇后,将重新用一指针指向链表头,并与慢指针每次走一步
  • 最终两指针相会于环结构的第一个节点

执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:38.9 MB, 在所有 Java 提交中击败了54.95%的用户

public class Solution {
    public ListNode detectCycle(ListNode head) {
        ListNode fast = head, slow = head;
        while (true) {
            if (fast == null || fast.next == null) return null;
            fast = fast.next.next;
            slow = slow.next;
            if (fast == slow) break;
        }
        fast = head;
        while (slow != fast) {
            slow = slow.next;
            fast = fast.next;
        }
        return fast;
    }
}

LeetCode 142 环形链表II

标签:指针   pre   leetcode   etc   ret   使用   节点   lang   while   

原文地址:https://www.cnblogs.com/CodeSPA/p/13790124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!