LeetCode 环形链表II:为什么双指针第二次会在环的入口相遇?

快慢指针

为什么相遇后让快指针回到起点,再让快指针和慢指针都一步一步地走,它们就会在环的入口相遇?

复杂度

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)
java 复制代码
 public ListNode detectCycle(ListNode head) {
        ListNode slow = head, fast =head;
        ListNode result = null;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
            if (fast == slow) {
                break;
            }
        }
        fast = head;
        while (slow != null && slow.next != null) {
            if (fast == slow){
                result = fast;
                break;
            }
            slow = slow.next;
            fast = fast.next;
        }
        return result;
    }
相关推荐
cwywsx5 分钟前
Linux:进程控制2
linux·运维·算法
真的想上岸啊19 分钟前
c语言第一个小游戏:贪吃蛇小游戏06
c语言·算法·链表
边跑边掩护25 分钟前
LeetCode 648 单词替换题解
算法·leetcode·职场和发展
小森77671 小时前
(七)深度学习---神经网络原理与实现
人工智能·深度学习·神经网络·算法
chenyuhao20241 小时前
链表的面试题4之合并有序链表
数据结构·链表·面试·c#
迷茫不知归路1 小时前
操作系统实验习题解析 上篇
c++·算法·操作系统·实验课设
愚润求学2 小时前
【递归、搜索与回溯】专题一:递归(二)
c++·笔记·算法·leetcode
水水沝淼㵘2 小时前
嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
linux·服务器·c语言·数据结构·学习·算法·排序算法
June`3 小时前
专题四:综合练习( 找出所有子集的异或总和再求和)
c++·算法·深度优先·剪枝
Magnum Lehar3 小时前
3d游戏引擎的Utilities模块实现下
c++·算法·游戏引擎