查找列表是否含有环(二)——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网站上写,“逼”自己掌握常用的函数。 阅读详情

相关推荐

Solidworks曲面建模学习(二)——3D草图

本文主要是演示有一些零件在solidworks中通过3D草来绘制会更加方便。

东东不熬夜的博客 9499

leetcode:环形链表(详解)

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

weixin_73142957的博客 1482

Mac OS X 工具技巧:一文搞定个性化命令行窗口(iTerm2 + zsh + oh-my-zsh 配置Powerline风格)

本不想写这篇文章的,因为在Linux下已经配置过很多次,想着mac应该找篇文章一次就搞定了,结果还是踩坑,看了很多文章,不是某一点没不清楚,就是截图有问题或者命令有问题,官网又难得找等等……花了3个多小时才搞定,所以,还是来总结一篇文章就能够搞定的教程。 为什么要用zsh?用了这么多年的bash,不能说bash不好,不过当我用了zsh后发现,什么叫更好用。 配置过程稍微有点繁琐,但是你看过效果...

mickjoust的技术小屋 1万+

Leecode之环形链表

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

lmy050813的博客 1081

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1919

图形引擎实战:镭射效果制作分享

该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。

qq_41166022的博客 1350

LeetCode 141 环形链表

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

吃橘子 341

C# Code-Behind 技术全面解析

Code-Behind 是 ASP.NET Web Forms 中的一种技术模式,通过将用户界面标记(.aspx文件)与程序逻辑代码(.aspx.cs文件)分离,实现表现层与逻辑层的解耦。其核心思想是前端展示与后台逻辑的物理文件分离,通过ASP.NET编译器将两者合并编译成一个Page类并执行。Code-Behind 的优势包括较好的代码组织、较高的开发效率,尤其适合快速开发数据驱动应用。然而,与现代开发模式如ASP.NET MVC、ASP.NET Core和Blazor相比,Code-Behind 在可维

记录学习的过程 956

Leetcode——环形链表

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

weixin_64394633的博客 638

智能车图像处理20-进阶篇12--正入十字补线1

这篇文章主要讲述基本的正入十字补线方法。

taiyuezyh的博客 6931

android studio 2022打开了v1 签名但是生成的apk没有v1签名问题

我使用了Android Studio Flamingo | 2022.2.1 Patch 2版本的IDE编译了一个apk,但是apksigner查看apk的签名信息时,发现只有v2签名,没有v1签名。试着改小一下minSdkVersion 为23重新编译apk,再检测一下签名版本v1居然打开了!参考网上搜索到的方法,手动在build.gradle里面添加。但是编译出来的apk还是只有v2的签名。里面提到了v1签名还和。

hedalei的博客 466

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

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

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

YOLO26改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLO26 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 221

双指针算法之快慢指针(一):力扣【判断链表是否有环】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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

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

425

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

眉头的骰 1991

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

力扣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、付费专栏及课程。

余额充值