剑指offer-刷题笔记-中等题-JZ23 链表中环的入口结点

剑指offer所有编程练习总结分析 给出剑指offer所有题目描述和对应的解题思路,并且在最有给出对应的代码展示和测试内容 由于牛客剑指Offer题目经过整理和筛选,是面试备考的经典资源之一,因此它的重要性在面试准备过程中是很高的。做这些题目可以帮助面试者熟悉常见的面试题型、巩固基础知识、提升编程能力,为应对面试提供了很好的准备。然而,还需注意不仅仅局限于做题,理解背后的原理和思想同样重要,以便能够在面试时灵活运用和展示自己的能力。 阅读详情

剑指offer-刷题笔记-中等题-JZ23 链表中环的入口结点

版本1-自己写的,可以过,但是空间复杂度稍大,通过增加一个map,对每次访问的节点做标记,找到重复访问的节点

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        map<ListNode*,int> flag;;
        while(pHead)
        {
            //cout<<pHead->val<<endl;
            if(flag[pHead] == 0)
            {
                flag[pHead] = 1;
                //break;
            }
            else if(flag[pHead] == 1)
            {
                break;
            }
            else{
                flag.insert(map<ListNode*,int>::value_type(pHead,0));
            }
            pHead = pHead->next;
                
        }
        return pHead;
    }
};

版本2-双指针-两个指针步长不一致,快指针步长为2,慢指针步长为1,如果有环,两个指针会相遇,相遇的位置就是环的入口节点

class Solution {
public:
    //判断有没有环,返回相遇的地方
    ListNode* hasCycle(ListNode *head) { 
        //先判断链表为空的情况
        if(head == NULL) 
            return NULL;
        //快慢双指针
        ListNode* fast = head; 
        ListNode* slow = head;
        //如果没环快指针会先到链表尾
        while(fast != NULL && fast->next != NULL){ 
            //快指针移动两步
            fast = fast->next->next; 
            //慢指针移动一步
            slow = slow->next; 
            //相遇则有环
            if(fast == slow) 
                //返回相遇的地方
                return slow; 
        }
        //到末尾则没有环
        return NULL; 
    }
    
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        ListNode* slow = hasCycle(pHead);
        //没有环
        if(slow == NULL) 
            return NULL;
        //快指针回到表头
        ListNode* fast = pHead; 
        //再次相遇即是环入口
        while(fast != slow){ 
            fast = fast->next;
            slow = slow->next;
        }
        return slow;
    }
};

【回眸】剑指offer(一)剑指offer怎么刷 最近有刷算法方面的需要,直接搜出来的学习建议和技巧都太宽泛,而且夹杂着很多广告。借助第二大脑给自己提了一些建议和计划,希望也能帮助到屏幕面前的你! 阅读详情

相关推荐

保姆级教程:在华为MateBook E Go上安装安卓子系统(含Hyper-V配置和地区切换避坑指南)

本文提供在华为MateBook E Go(ARM架构)上安装Windows 11安卓子系统(WSA)的详细指南。重点阐述了ARM平台无需指令转译的流畅原生体验优势,并逐步讲解启用Hyper-V虚拟化、切换系统区域以安装Amazon Appstore、配置开发人员模式及使用ADB安装第三方应用(如华为应用市场)的全过程,助您解锁高效的原生安卓应用生态。

kafka6courier的博客 532

牛客网剑指Offer-链表篇-JZ23 链表中环的入口结点

给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。

技术卷的博客 890

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

AI+全栈,AI+应用,实操落地,前沿技术 3806

剑指offer JZ23 链表中环的入口结点

快慢指针,fast指针走两步,slow指针走一步,如果fast指针走到尾部了,说明链表中没有环,返回null,否则fast指针与slow指针相遇,存在环,退出循环。由于相遇节点到入口节点的距离与头结点到入口节点的距离相同,我们将fast指针置为head,每次循环fast和slow各走一步,当fast==slow时,则找到入口节点,返回fast。环的部分只有一个结点,所以返回该环形链表入口结点,后台程序打印该结点对应的结点值,即2。可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。

qq_74980411的博客 379

软件项目成本控制实战:从COCOMO模型到挣值分析的5个关键步骤

本文详细介绍了软件项目成本控制的5个关键步骤,从COCOMO模型估算到挣值分析预警,帮助中小型团队精准管理预算。通过简化COCOMO II的有机模式、动态建立成本基准、轻量化挣值分析等方法,项目经理可以有效应对预算超支和进度延误问题,提升项目成功率。

weixin_30733003的博客 227

ThinkAdmin后台Getshell

通过文件包含或者图片马的方式Getshell。修改其可允许的文件类型,php不允许,可添加。系统管理->系统参数配置->本地服务器存储。

hot_milk1的博客 1863

剑指offer刷题宝典--第1节

剑指offer刷题宝典,重点总结,链表,树

weixin_41171614的博客 1275

19、利用PostGIS进行空间分析:更高效的矢量分析方法

本文介绍了如何利用PostGIS进行高效灵活的矢量空间分析,重点探讨了在选址安静住宅场景中使用缓冲区和距离测量两种方法的实现与优化。通过QGIS与PostGIS结合,演示了数据上传、CTE应用、ST_Intersects与ST_Distance函数对比,并深入分析了横向子查询在提升查询性能和代码可读性方面的优势。文章还比较了不同方法的适用场景,并以房地产开发选址为例展示了完整分析流程,最后总结了PostGIS在空间分析中的强大能力与未来应用前景。

d3e4f的博客 92

[java刷算法]牛客—剑指offer链表有环的入口、反转链表、合并排序链表

[java刷算法]牛客—剑指offer链表有环的入口、反转链表、合并排序链表

muzi_longren的博客 1080

手把手教你完成YOLOv11 PySide6目标检测界面搭建,使用Qt6设计YOLOv11检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv11 与 PySide6,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。系统功能有:目标检测程序实现图片/视频/摄像头检测,AI 问答界面(deepseek大模型接口,流式输出)、退出登录、界面保存登录状态、个人信息修改等

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 7013

Oracle EBS 中美国销售税的实现方式

Oracle EBS通过eBTax引擎实现美国销售税管理,需配置税务管辖区、税率及规则等要素,基于收货地址和商品分类计税。系统支持免税交易和使用税处理,但因美国税率复杂多变,建议集成Vertex等第三方服务自动更新税率。关键配置包括创建USSales Tax制度、维护地点层级及物料税务分类,同时需管理客户免税证书。对于跨国业务,系统也支持欧盟VAT等其他国家税制配置。

金牌架构师 296

《剑指offer》刷题记录汇总篇

《剑指offer》刷题汇总1 前言2 刷题网站3 刷题笔记汇总 1 前言   最近啃了个把月的数据结构与算法,有点飘了,准备拿牛客网的剑指offer模块练练手,个人觉得自己刚入门(或许还没入),所以这篇博客比较适合想学习数据结构或者刚接触数据机构的新手朋友朋友们,当然,大佬们也可以看看,一是指导,二是差缺补漏。   刷题顺序即题目顺序,时间的话大概一周 2 刷题网站 点击直达:剑指offer 3 刷题笔记汇总 题号 题目 知识点 JZ1 二维数组中的查找 数组、查找 JZ2 替换空格 字

郑德帅 864

打破RK3588 GPIO中断响应延迟的枷锁,开启高效编程

本文针对RK3588芯片在智能安防和工业自动化应用中出现的GPIO中断响应延迟问题展开深入分析。通过硬件原理剖析,发现延迟主要源于中断控制器优先级设置、线路干扰等硬件因素,以及中断处理函数复杂、内核调度延迟等软件问题。提出硬件优化方案包括合理布局布线、电源稳定设计,软件层面则通过精准配置设备树、精简中断处理函数、利用工作队列等内核机制进行优化。测试结果显示,优化后中断响应延迟从50-80ms降至10-20ms,高负载下也能稳定在50ms以内。文章最后展望了AI技术在中断调度中的潜在应用价值。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 362

《剑指offer》——刷题日记

《剑指offer》——刷题日记 关于链表和 有关动态规划的题目

m0_56069910的博客 718

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

剑指offer(C++)-JZ23:链表中环的入口结点(数据结构-链表)

C++实现——链表中环的入口结点(数据结构-链表)

翟天保的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【剑指offer】链表 系列

本文分享了剑指offer系列链表题目的解题思路和代码实现。针对leetcode下架该系列题目的问题,作者通过购买牛客网实体书整理了这些题目的解题方案,包括从尾到头打印链表、反转链表、合并有序链表、查找公共节点等8个经典链表问题。每个题目都提供了简洁的递归或迭代解法,并附有C++代码实现。作者特别强调了解题的关键思路,如使用哈希表处理复杂链表复制、双指针技巧查找环入口等,帮助读者免费获取这些优质算法资源,避免购买实体书的麻烦。

jupangMZ的博客 1005

【剑指offer】链表06-JZ23 链表中环的入口结点

两节点遍历链表,步幅为1,则两指针相遇节点一定是环的入口节点。直到有一个节点已经存在在哈希表中,该节点就是环的入口节点。创建两个指针,一个快指针每次偏移两个节点,一个慢指针每次偏移一个节点,如果遍历快指针永远不为null,则该链表有环。遍历链表节点,每遍历一次存进哈希表一次,如果哈希表第一次重复存入一个节点,该节点为环的入口节点。说明: 环的部分只有一个结点,所以返回该环形链表入口结点,后台程序打印该结点对应的结点值,即2。给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。

-笔记- 378

【剑指offer】JZ23-链表中环的入口节点-Python解法

有环链表与无环链表之间最大的区别是在有环链表找不到一个Next域为空的节点(p.next = NULL不存在),可以使用来判断链表是否包含环,定义两个指针,同时从链表的头节点出发,一个指针一次走一步(慢指针),另一个指针一次走两步(快指针),如果走得快的指针追上了走得慢的指针,那么链表就包含环;如果走得快的指针走到了链表末尾还没有遇到走得慢的指针,那么链表就不包含环;

冲冲冲 829

剑指 Offer 23 链表中环的入口结点

慢指针每次只移动一步,而快指针每次移动两步。这样一来,如果在移动的过程中,快指针反过来追上慢指针,就说明该链表为环形链表。随后,slow指针每次向后移动一个位置,而fast指针向后移动两个位置。此时,fast指针已经走完了环的n圈,因此它走过的总距离为 a+n(b+c)+b=a+(n+1)b+nc。有了 a=c+(n−1)(b+c) 的等量关系,我们会发现:从相遇点到入环点的距离加上n−1 圈的环长,恰好等于从链表头部到入环点的距离。根据题意,任意时刻,fast指针走过的距离都为slow指针的2倍。

庄小焱 624

【剑指Offer】JZ23链表中环的入口结点

题目地址: 链表中环的入口结点_牛客题霸_牛客网 题目: 描述 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 数据范围:n\le10000n≤10000 节点值范围:[1,10000] 要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n) 例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示: 可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。 输入描述: 输入分为2段,第一段是入环前的链表部分,第二段...

做题记录 247

【剑指offer】JZ23 链表中环的入口结点

快指针一共走了x+n(y+z)+y步,慢指针一共走了x+m(y+z)+y,这个时候快指针走的倍数是慢指针的两倍,则x+n(y+z)+y=2(x+m(y+z)+y),这时候x+y=(n−2m)(y+z),因为环的大小是y+z,说明从链表头经过环入口到达相遇地方经过的距离等于整数倍环的大小:那我们从头开始遍历到相遇位置,和从相遇位置开始在环中遍历,会使用相同的步数,而双方最后都会经过入口到相遇位置这y个节点,那说明这y个节点它们就是重叠遍历的,那它们从入口位置就相遇了,这我们不就找到了吗?返回值:“null”

LouHerGetUp的博客 115

【剑指offer-C++】JZ23:链表中环的入口结点

【剑指offer-C++】JZ23:链表中环的入口结点

❀雾里看花花里看雾❀ 241

《剑指offer》JZ23 链表中环的入口结点 两种方法解析

今天11.30,现在已经进入12月了,呜呜呜加油 JZ23 链表中环的入口结点 题目链接 大概就是题目会给一个链表,求环(如果尾巴的next指向前面的节点就成环了) 主要有两种解法 1.哈希法 意思就是遍历这个链表,一步一步走,如果没有成环的话没次都会走到不同的结点。用一个容器把走过的结点都存起来,这时候要是走到一个以前走过的结点了,那必然就是又绕到前面去,成了环。 so,在C++的STL容器里面只有set和map有find方法(图省事),我就直接用了set。 上代码: class Solution { p

蔡尼玛的博客 784

剑指offer刷题总记——Java

剑指offerJZ1 二维数组中的查找JZ2 替换空格JZ3 从尾到头打印链表JZ7 斐波那契数列JZ14 链表中倒数第k个节点JZ15 反转链表JZ36 两个链表的第一个公共结点 JZ1 二维数组中的查找 题目:二维数组中的查找 public class Solution { //双重for循环,遍历查找 public boolean Find(int target, int [][] array) { //行遍历,array.length为行数 for(i

小叮当不懒的博客 742
上一篇: 剑指offer-刷题笔记-中等题-JZ14 剪绳子
下一篇: 剑指offer-刷题笔记-中等题-JZ26 树的子结构
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值