查找列表是否含有环(二)——Leetcode系列(十)

【实战】ACM 选手图解 LeetCode 环形链表 图解 LeetCode 141:环形链表。 阅读详情

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

Follow up:
Can you solve it without using extra space?

Proof:

StepOne goes one step each time, StepTwo goes two steps each time. We assume that, there are n steps before entering into the cycle, the cycle length is k, the length between cycle begin's node and meeting node is m, then, we have:

StepOne goes n+xk+m steps, StepTwo goes n + yk+m steps, 2*(n+xk+m) = n + yk + m. So (y-2x)k = n + m;

(y-2x-1)k + (k -m) = n. Thus, we know when StepOne goes from the head, and StepTwo goes from the meeting node, they will meet at the cycle begin.

My Answer:

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode detectCycle(ListNode head) {
        if(head == null){
            return null;
        }
        ListNode stepOne = head;
        ListNode stepTwo = head;
        while(true){
            if(stepTwo == null){
                return null;
            }
            stepTwo = stepTwo.next;
            if(stepTwo == null){
                return null;
            }
            stepTwo = stepTwo.next;
            stepOne = stepOne.next;
            if(stepTwo == stepOne){
                break;
            }
        }
        stepOne = head;
        while(stepOne != stepTwo){
            stepOne = stepOne.next;
            stepTwo = stepTwo.next;
        }
        return stepOne;
    }
}

 题目来源:https://oj.leetcode.com/problems/linked-list-cycle-ii/

力扣hot100二刷——链表 第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。 阅读详情

相关推荐

反向代理的隐形陷阱:为何你的HTTPS请求会降级为HTTP?

本文深入探讨了Nginx反向代理中HTTPS降级为HTTP的隐形陷阱及其安全风险,分析了五大降级诱因,包括协议信息丢失、重定向配置错误等,并提供了完整的防御性配置方案和实战指南,帮助开发者确保Web应用的安全性。

kotlin6android的博客 453

leetcode:环形链表(详解)

前言:内容包括-题目,代码实现,大致思路,代码解读,拓展问题

weixin_73142957的博客 1482

深入浅出:CosineLRScheduler 调度器的原理与实战应用

本文深入解析了CosineLRScheduler调度器的核心原理与实战应用,详细介绍了余弦退火算法及其在深度学习模型训练中的优势。通过参数配置建议、PyTorch实现示例和常见问题解决方案,帮助开发者高效应用该调度器提升模型性能,特别适用于计算机视觉和自然语言处理任务。

sss66的博客 858

Leecode之环形链表

这道题就是去判断一个链表是否带环,分两种情况,链表中只有一个元素则一定不带环,链表中有两个及以上的元素则要引入快慢指针。

lmy050813的博客 1081

手把手教你解决Ubuntu 20.04虚拟机桥接模式下的网络问题:DHCP与静态IP配置全指南

本文详细解析了Ubuntu 20.04虚拟机在桥接模式下的网络配置问题,包括DHCP与静态IP的配置方法及常见故障排查技巧。通过深入讲解桥接模式原理和提供实战操作指南,帮助用户解决无法访问外网、ping不通等典型网络问题,实现虚拟机与物理网络的无缝连接。

weixin_29256771的博客 541

【02】【VisionMaster V4.0.0 】安装教程—— 授权文件更新报错:应用程序与本地LM通讯出错(怀疑电脑加密 和 上网受限 造成的 )

本文详细介绍了海康VisionMaster 4.0试用版的安装流程及常见问题解决方案。主要内容包括:1)从官网下载基础安装包、试用补丁和授权文件;2)按顺序安装主程序、补丁和授权文件;3)针对授权失败问题提供两种解决方案(更换未加密电脑或使用加密狗);4)说明试用版的功能限制(30天试用期、2个流程限制等)。文章特别指出电脑加密可能导致授权失败,并提供了安装报错时的处理建议,为初次使用者提供了完整的安装指导。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 7143

LeetCode 141 环形链表

环形链表 题目 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输...

吃橘子 341

STM32硬件SPI驱动W5500以太网模块全流程(附避坑指南)

本文详细介绍了如何使用STM32硬件SPI驱动W5500以太网模块,包括开发环境准备、SPI接口配置、网络参数设置及常见问题排查。通过官方驱动移植和实战案例,帮助开发者快速实现以太网通信功能,适用于智能家居、工业控制等物联网应用场景。

weixin_29192141的博客 364

Leetcode——环形链表

题目原型: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中...

weixin_64394633的博客 638

Xilinx FPGA平台DDR3设计保姆式教程(3)MIG IP核使用教程及DDR读写时序

干货来了,用DDR搬砖,只需要会用IP就好,Xilinx官方YYDS! ----------------------------------------------------------------------------------------------------------------- 汇总篇: Xilinx平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了 ----------------------------------------------------------...

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2万+

K8s-K8s部署Zookeeper+Kafka+ELFK+持久化数据

K8s环境下容器化部署`Zookeeper+Kafka+ELFK`日志收集系统

✅ 专注企业级 Linux/DevOps 运维的实战派 ✅ 已输出上百篇可落地方案 ✅ Shell 脚本开箱即用 ✅ K8s/YAML 环境验证 ✅ 故障排查链路完整复现 1914

每天一道LeetCode-----判断链表是否有环,如果有,找到环的入口位置

Linked List Cycle原题链接Linked List Cycle判断一个链表是否有环,空间复杂度是O(1)如果不考虑空间复杂度,可以使用一个map记录走过的节点,当遇到第一个在map中存在的节点时,就说明回到了出发点,即链表有环,同时也找到了环的入口。不适用额外内存空间的技巧是使用快慢指针,即采用两个指针walker和runner,walker每次移动一步而runner每次移动两步。当w

一个程序渣渣的小后院 4万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

双指针算法之快慢指针(一):力扣【判断链表是否有环】leetcode-141、142

kaui /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { ListNode *fast,*slow;

比特的一天 2762

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

判断一个单链表中是否含有“环”

判断单链表是否有环的问题,其实也可以使用快慢指针来解决,思想也是非常简单。 不知道你发现没有,其实快慢指针就是解决问题的思路,你能否想到这个思路呢?到底思路从哪里来?我觉得这是一个值得思考的问题,比如我们处理过类似问题可以获得思路,我们脑海中突发灵感可以获得思路。除了这里提到的经验、灵感,你还能从哪里获得思路呢? 说下这个问题的解法: 判断一个单链表中是否含有环: 思想:使用快和慢两...

425

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

力扣【LeetCode】—— 环形链表(判断是否有环)、环形链表(返回入环节点)【java】

文章目录环形链表(判断是否有环)环形链表(返回入环节点) 环形链表(判断是否有环) 题目地址:https://leetcode-cn.com/problems/linked-list-cycle/ 题目: 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为

眉头的骰 1991

力扣100二刷——二分查找、栈、堆

第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。

weixin_49426115的博客 993

有向图是否有环详解(结合Leetcode 207、210讲解,包括工程最短消耗,是否有环的检查,路径的生成)

因为上一篇无向图是否含环的文章取得了还不错的反馈,以及笔者刚好也在复习数据结构的知识,因此加更一篇有向图存在环的判断,我们可以看看两者之间是否具有互相可参考性。有向无环图的主要应用是AOV和AOE分别是顶点制约关系和过程制约关系。

Alpaca10086zyys的博客 1368

LeetCode:判断单链列表是否存在环

判断单链列表是否存在环,即某个节点的next指向链表中在它前面的节点,这样在链表尾部形成一环。 1.判断是否存在环 用一个fast指针,一个slow指针,slow每次移动1,fast每次移动2. 若链表存在环,移动快的fast指针一定在环内追赶上移动慢的slow指针,则相遇 2.找到环的入口 当两指针第一次相遇后,证明存在环。现在将fast指针重新设为head,slow指

Neil_Li's Blog 1182

算法:如何判断链表是否含有环

题目:判断链表是否有环 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 示例 : 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 来源:力扣(LeetCode) 链接:htt

一只修仙的猿 393

Python 链表中间是否有环 Leetcode No.141

Python 链表中间是否有环 Leetcode No.141 Ps:用英语的不是为了装哈,主要是为了锻炼一下英语阅读,毕竟想往上走的话,读源码,读文档,读国外论文都是必经之路。那么英语能力必不可少,希望你们也可以想我一样。 主要意思就是判断链表中是否有环。 思路也很简单:一个是用set存,发现他数量不加了那不就代表有环了嘛。 第二种方式非常的巧妙,用一个快指针和一个慢指针,就等于是一个龟兔赛...

GhostintheCode的博客 247

判断有向图是否有环

利用拓扑排序进行判断,kahn算法: 1.计算图中所有点的入度,把入度为0的点加入栈 2.如果栈非空: 取出栈顶顶点a,输出该顶点值,删除该顶点 从图中删除所有以a为起始点的边,如果删除的边的另一个顶点入度为0,则把它入栈 3.如果图中还存在顶点,则表示图中存在环;否则输出的顶点就是一个拓扑排序序列 例题:leetcode207 课程表 class Solution { public: ...

weixin_43175029的博客 9284

【LeetCode】207. Course Schedule判断有向图是否有环

1、问题描述输入:n, [[1,0], [2,1], …., [n, n-1], [0,1], …..],假设没有重复的边 n表示总共0~n-1门课程,即n个节点 [1,0]表示先上课程0,才能上课程1,即0→1有一条有向边 输出:能否完成所有课程,即无环true/有环false2、思路DFS。 除了树边,假设存在一条边v→u,则有如下性质: 1. pre(u) < pre(v),pos

myangel_xy的博客 1357

Leetcode(七)——给定一个链表 ,判断链表中是否有环。 返回环的入口。

给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。

m0_74862890的博客 1123

给你一个链表的头节点 ,判断链表中是否有环,假如链表有环,返回链表开始入环的第一个节点。

①:给你一个链表的头节点 ,判断链表中是否有环。②:假如链表有环,返回链表开始入环的第一个节点。定义一个慢指针:slow,和一个快指针:fast。判断一个链表是否有环,可以用while循环让快指针fast一直往后走下去,并判断fast和fast-next是否为NULL,如果是则链表没有环,如果不是则fast指针会一直走下去。画出链表有环的情况:​图一。

x181018863的博客 558

141.列表是否有环 | 哈希表、双指针 | easy | Leetcode

基础知识 1. 链表Linked-List Leetcode题解:一文搞定常见的链表问题 数组的优缺点: 优点:可以根据偏移实现快速的随机读写。 缺点:扩容,增删元素极慢。 链表的基本知识: 链表的指针域指向该节点的下一个节点的内存地址,因此尾节点的指针域为空。 链表易于插入与删除,但无法高效获取长度、访问元素。 链表的插入与删除原理(关于插入与删除时如何改变链表的指针域),见链接 环形链表:...

qq_46497008的博客 322
上一篇: 查找列表是否含有环(一)——Leetcode系列(九)
下一篇: 判断字符串是否能分割成字典中的单词(一)——Leetcode系列(十一)
Hooting
博客等级 码龄17年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值