[剑指offer]JT55---链表中环的入口结点(所有的偶遇都是蓄谋已久!详细图解哦!)

news/2025/2/23 0:03:38

剑指offer第五十五题

  • 题目如下
    • 思路与代码

题目如下

在这里插入图片描述

思路与代码

1.双指针找到相遇点,慢指针走一步,快指针走两步,它们肯定会相遇的,因为相对速度是一步,不会错过,哎,快指针真的是个舔狗…


2.看图说话
在这里插入图片描述

a:链表头到环入口的长度
b:环入口到相遇点的长度
c:相遇点到环入口的长度

相遇时:
指针路程=a+(b+c)*k+b,k>=1,其中b+c为环的长度,k为绕环的圈数
指针路程=a+b
指针走的路程是慢指针的两倍,所以:
(a+b)*2=a+(b+c)*k+b

化简可以得到 a=(k-1)*(b+c)+c 链表头到环入口的距离=相遇点到环入口的距离+(k-1)圈环长度
所以,两个指针分别从链表头和相遇点出发,最后一定相遇于环入口。

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        ListNode*fast=pHead,*low=pHead;
        while(fast&&fast->next){
            fast=fast->next->next;
            low=low->next;
            if(fast==low)
                break;
        }
        if(!fast||!fast->next) return NULL;
        low=pHead;
        while(fast!=low){
            fast=fast->next;
            low=low->next;
        }
        return low;
    }
};

在这里插入图片描述


http://www.niftyadmin.cn/n/1847368.html

相关文章

tb 开拓者 跨周期应用

Params//此处添加参数VarsNumeric ma1;Numeric ma2;bool boollong;bool boolshort;bool condition1;Bool condition2;Begindata0.ma1 data0.Average(data0.close,5);data0.ma2 data0.Average(data0.close,20);data0.PlotNumeric("data0.ma1",data0.ma1);…

[100天挑战100个前端效果]第十二天---3D图片(图片素材甚是优秀!)

3D图片让我们先来看看实现的效果html代码css代码素材图片今日份知识总结让我们先来看看实现的效果 html代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" cont…

php 双向队列类

&#xff08;deque&#xff0c;全名double-ended queue&#xff09;是一种具有队列和栈的性质的数据结构。双向队列中的元素能够从两端弹出&#xff0c;其限定插入和删除操作在表的两端进行。 在实际使用中&#xff0c;还能够有输出受限的双向队列&#xff08;即一个端点同意插…

tb开拓者画线

PlotString ("demo","▽▽▲▼",high*1.2,Red);

centos 7.6 监控网卡流量

1.安装yum install iftop -y2.查看网卡流量iftop -i eth13.监控特定ip的流量监控某个特定IP的带宽访问情况&#xff1a;iftop -i eth1 -B -F 182.92.***.20显示182.92.***.20这个IP与服务器的网卡eth1交互的数据量&#xff0c;单位是Byte。4.退出q5.显示界面说明&#xff1a;&q…

表单提交数据丢失的问题

在流程审批过程中&#xff0c;提交审批时发现使用request.getParameter(“taskId”)获取数据时&#xff0c;发现取得任务ID为空。 在调试的过程中我发现表单的数据量特别大。 到网上查询了一下&#xff0c;说post 提交数据数据量有限制。 于是写了个表单测试了一下&#xff1a…

tb 重画开单记录

1.把下单时间和 开单方向 价格写入全局变量 Commentary(Text(Time())); 2.读取全局变量里面的记录&#xff0c;重新在图标上画出。

一个简单的负边距布局

忘记是哪家公司的面试题了&#xff0c;是一道考察css的题要求是这样布局&#xff08;如图&#xff09;兼容ie6等主流浏览器 大div宽高都为150px 小框为正方形边框为3px&#xff0c;鼠标划过边框颜色变化。解答<div id"div1"> <a>111</a><a>2…