美文网首页
142. 环形链表 II

142. 环形链表 II

作者: bangbang2 | 来源:发表于2020-08-10 09:05 被阅读0次
image.png

要求出环形链表的起始点
难点在于如何推出起始点的位置
首先假设链表的长度为b,其余长度为a


image.png
image.png

关键:走到起始点,必须走a+nb步,第一次相遇nb。所以我们让fast从头开始走a步,就会与慢指针第二次相遇
注意是第二次相遇,但不是最后一次相遇
下一次相遇可能在下一个节点,不一定是在入口节点

public class Solution {
    public ListNode detectCycle(ListNode head) {
        if(head==null||head.next==null) return null;
        ListNode fast=head;
        ListNode slow=head;
        while(fast.next!=null&&fast.next.next!=null){
            
            fast=fast.next.next;
            slow=slow.next;
            if(slow==fast) break;
        }
        if(fast.next==null||fast.next.next==null) return null;//如果没有环,这一步就退出来了,不会继续处理下边///的代码
        
        fast=head;
        while(fast!=slow){//因为有环,就不用再去判断fast.next,因为肯定能一直走下去
            fast=fast.next;
            slow=slow.next;
        }
        return slow;
    }
}

相关文章

  • LeetCode 142 环形链表 II Linked List

    有关链表的LeetCode做题笔记合集,Python实现 链表定义 142. 环形链表 II Linked Lis...

  • TOP100

    142. 环形链表 II[https://leetcode-cn.com/problems/linked-list...

  • 双指针

    一、双指针总结 1.1题目 快慢指针(主要解决链表中的问题) 141.环形链表 142.环形链表 II 876.链...

  • 获取有环单向列表环入口的结点(双指针法)

    LeetCode 141.环形链表 142.环形链表II 对题目不熟悉的同学,可以先刷下题,结合LeetCode上...

  • LeetCode:142. 环形链表 II

    问题链接 142. 环形链表 II[https://leetcode-cn.com/problems/linked...

  • 142. 环形链表 II

    题目地址(142. 环形链表 II) https://leetcode.cn/problems/linked-li...

  • LeetCode 142. 环形链表 II

    142. 环形链表 II 给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链...

  • LeetCode 142. 环形链表 II(Linked Lis

    142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示...

  • 142. 环形链表 II

    142. 环形链表 II 问题 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为...

  • 142. 环形链表 II

    题目链接: 142. 环形链表 II 题目描述: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返...

网友评论

      本文标题:142. 环形链表 II

      本文链接:https://www.haomeiwen.com/subject/rgkrdktx.html