LeetCode 142. 环形链表 II(双指针,哈希表

从波士顿动力SpotMini拆解看四足机器人机械设计:关节布局与电机选型的5个关键决策点 本文深入解析波士顿动力SpotMini四足机器人的机械设计,聚焦关节布局与电机选型的5个关键决策点。通过拆解髋关节偏移距、膝关节传动链、电机热管理等核心设计,揭示商业级四足机器人的工程智慧,为工业巡检、物流机器人等应用提供实用参考。 阅读详情

142. 环形链表 II

难度中等637

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

说明:不允许修改给定的链表。

 

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:tail connects to node index 1
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:tail connects to node index 0
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:no cycle
解释:链表中没有环。

 

进阶:
你是否可以不用额外空间解决此题?

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    // 老思路了:假设环之前的长度为a,环的长度为b
    // 快慢指针,如果快指针为null,那么说明无环
    // 如果相遇,此时f=2s,快的比慢的多走的是环的整数倍
    // f=2s=s+nb,s=nb,所以相遇的时候,再走a步,就到了入口,a+nb
    // 要再走a步,不需要知道a的值,只需要让另一个指针从head
    // 开始,和慢指针同步走,相遇即可
    public ListNode detectCycle(ListNode head) {
        ListNode f,s;
        f=s=head;
        while(f!=null&&f.next!=null){
            f=f.next.next;
            s=s.next;
            if(f==s){
                break;
            }
        }
        if(f==null||f.next==null){
            return null;
        }
        // 说明f==s
        ListNode p=head;
        while(p!=s){
            p=p.next;
            s=s.next;
        }
        return p;
    }
}

或者至少也可以这样:

/**
 * 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) {
        ListNode p=head;
        HashSet<ListNode> set=new HashSet<>();
        while(p!=null){
            if(set.contains(p)){
                return p;
            }
            set.add(p);
            p=p.next;
        }
        return null;
    }
}

 

别再凭感觉选电容了!手把手教你计算电机控制器里的母线电容(附Excel计算工具) 本文详细解析了电机控制器中母线电容的选型方法,从理论计算到工程实践,帮助工程师避免常见误区。通过精确计算纹波电压、电容容量等关键参数,并结合薄膜电容与电解电容的性能对比,提供实用的选型建议。附带的Excel计算工具可快速完成参数计算,适用于工业伺服驱动和电动车电机控制器设计。 阅读详情

相关推荐

数据科学常见模型总结(二)-倾向性得分匹配模型

PSM的核心思想是从未受干预的用户群体中,找到和干预对象一模一样的用户,这样就可以把因果效应归因到干预上。

wudelong0112的专栏 4889

leetcode-142-环形链表 II

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置**(索引从 0 开始)**。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。 142. 环形链表 II - 力扣(LeetCode) (leetcode-cn.c

shadowgully的博客 1103

使用同一个时钟源clki,做两个二分频时钟,得到div2_clk1和div2_clk2,这两个时钟都能跟源时钟clki同步,但是div2_clk1和div2_clk2的相位可能是相同的,也可能是反相

比如,触发器1的初始Q为0,而触发器2的初始Q为1(这可能由于芯片制造工艺的微小差异、上电过程的随机性、或没有全局复位信号导致)。这句话的意思是:虽然div2_clk1和div2_clk2都是由同一个妈妈(clki)生出来的,频率也都是妈妈的一半,但它们“起步”的时刻可能不同。所以,上面那段话是在提醒你注意这种潜在的、由分频产生的时钟相位关系的不确定性,这在异步电路设计或时钟管理中是必须考虑的关键因素。结果:div2_clk1和div2_clk2的波形完全重合,它们的上升沿和下降沿都发生在同一时刻。

m0_49540263的博客 591

力扣第142题.环形链表II

142. 环形链表 II题目题解一:快慢指针题解二:哈希表 题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。 示例 1: 输入:hea

m0_51456787的博客 1217

制造业私有化LLM部署实战:从RAG到智能体,构建企业专属知识大脑

大型语言模型(LLM)作为人工智能的核心技术,通过在海量文本数据上进行预训练,具备了强大的语言理解和生成能力。其原理在于基于Transformer架构,通过自注意力机制捕捉长距离语义依赖。这一技术价值在于能将非结构化信息转化为可计算、可推理的知识,从而赋能企业实现知识的高效管理与应用。在制造业等强数据安全与知识密集型领域,私有化部署的LLM结合检索增强生成(RAG)和智能体(Agent)技术,能够深入业务流程,构建安全、专属的智能知识中枢。本文聚焦于如何利用Qwen、LangChain、向量数据库等技术栈,

weixin_42523711的博客 247

麒麟操作系统安装达梦数据库ARM版

Linux安装达梦数据库ARM版

运维@小兵的博客 8769

leetcode[0142]环形链表II,判断是否存在环形链表并找到环形的入口

判断是否存在环形链表并找到环形的入口

代码随想录 475

S7-200SMART PLC中进行MODBUS RTU通信的3种方法(1)

S7-200SMART PLC中进行MODBUS RTU通信的3种方法(1)

Robot_PLC_HMI_Automation 4237

环形链表 II

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。双指针,当相交的时候,把慢指针指向头部节点,快慢指针,都每次走一步,再次相遇,相遇的节点就是入环的节点。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。输入:head = [3,2,0,-4], pos = 1。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。

lang_z的博客 353

PLC模糊控制模糊PID(梯形图实现+算法分析)

博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-优快云博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容水箱的模糊PID问题做详细讲解(包括所有源代码和模糊规则设置参数)。

RXXW_Dor的博客 5884

华为OD技术面真题 - 数据库Redis - 1

汇总华为OD技术面真题Redis方面高频真题,提供详细解答。

qq_45776114的博客 934

力扣刷题记录 -- JAVA--30--142. 环形链表 II

【代码】力扣刷题记录 -- JAVA--30--142. 环形链表 II。

taiyuezyh的博客 211

SE80 Repository Information System 在 SAP CRM WebClient UI 组件分析中的实战指南

在 SAP CRM WebClient UI 开发过程中,如何快速定位组件、视图、上下文节点以及各类运行时对象,一直是调试效率的关键。(后文简称RIS)正是隐藏在SE80里的瑞士军刀,帮助开发者按照组件集、数据元素、上下文节点属性等多维条件进行交叉检索。官方博客将它描述为本文结合多年项目经验,系统梳理RIS的功能脉络与实战技巧,同时引入真实案例,示范如何借助它在几分钟内完成以往动辄数小时的排查任务。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2万+

LeetCode-142. 环形链表 II【哈希表 链表 双指针】

那么相遇时: slow指针走过的节点数为: x + y, fast指针走过的节点数:x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。让index1和index2同时移动,每次移动一个节点, 那么他们相遇的地方就是 环形入口的节点。

zik的博客 1918

VB摄像头监控

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

leetcode 142. 环形链表 II (哈希表 + 快慢指针(双指针))

文章目录题目要求解题思路方法一:字典(哈希表)方法二:快慢指针知识点 题目要求 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。 说明:不允许修改给定的链表。 进阶: 你是否可以使用 O(1) 空间解决此题 解题思路 方法一:字典(哈希表) # Definition f

我的AI笔记 161

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【LeetCode每日一题】[中等]142. 环形链表 II

【LeetCode每日一题】[中等]142. 环形链表 II 142. 环形链表 II 题目来源 算法思想:链表,指针,哈希表 题目: 今天的题目描述,一言难尽, 题目: 给定一个链表,返回环起的节点 思路. java代码–哈希表 一个非常直观的思路是:我们遍历链表中的每个节点,并将它记录下来;一旦遇到了此前遍历过的节点,就可以判定链表中存在环。借助哈希表可以很方便地实现。 public class Solution { //返回起环的节点 public ListNode detectCycle(

qq_39457586的博客 192

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

142. 环形链表 II(中等 哈希表 链表 双指针)

142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:返回索引为

weixin_43942435的博客 137

代码随想录|链表|08环形链表II

当n>1时,说明fast指针已经走了好几圈了,我们仍然使用上面的判断方式,因为对于fast指针而言,(n-1)(y+z)里面y+z是环的长度,无论加多少个y+z,fast指针还是在当前位置。分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。当n=1时,说明从头结点出发一个指针,从相遇节点也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是环形入口的节点。

这里什么也没有 1216

LeetCode 142. 环形链表 II(逻辑、环链表、快慢双指针)

b ,所以此时 s = n。

virtual_YL的博客 199

Leetcode刷题经验

Java学习笔记Leetcode刷题经验热题HOT100142、环形链表 II Leetcode刷题经验 热题HOT100 142、环形链表 II 解题思路: 该题其实可以直接采用哈希表去存储这些数字,若发现哈希表里已有这个元素,则表明有环,为了降低空间复杂度,这里采用双指针的思想去进行求解,即快指针与慢指针,为了方便,这里直接借鉴官方提供的思路与算法: 时间复杂度:O(N)O(N)O(N),这里的NNN指的是链表的总节点个数;空间复杂度:O(1)O(1)O(1),由于采用的是双指针,故只需要常数级

hwt85235的博客 151

JAVA刷Leecode-玩转双指针-快慢指针(142)

JAVA刷Leecode-玩转双指针-快慢指针(142)算法思想内容分类环形链表 II(142,medium)题目描述输入输出样例示例1示例2解题思路1:题解1解题思路2:题解2解题思路3:题解3解题思路4:题解4资源学习 算法思想 双指针一般用来遍历数组,两指针指向不同的元素,从而沟通协调完成任务;也可以延伸到多数组多指针。 大致分为两种情况: 两指针指向同一数组,遍历方向相同且不相交,又称为**滑动窗口**,经常用于区间搜索; 两指针指向同一数组,但遍历方向相反,可以用来进行搜索,待搜索的数组往往是

水鱼的博客 471

【leetcode学习记录】

记录一些自己的刷题心得。

一起学习一起进步。 473

Leetcode (力扣)做题记录 hot100(141,234,142,21)

判断环形链表,用兔子乌龟思想,一个走得快一个走得慢,能碰上就证明是个环形。把链表里面的值放到一个数组里面,然后双指针(前后指针)进行判断即可。把所有节点放到哈希表里面,如果出现重复的节点就证明有环。本文相关图片资源来自于网络中,如有侵权请联系删除!

zihenzzz的博客 306

【算法十二】24.两两交换链表中的节点 142.环形链表||

时间复杂度:O(空间复杂度:O(N)递归并不是“免费”的。每一次函数调用都会在内存中开辟一块区域,叫做栈帧,用来存储局部变量和返回地址。 时间复杂度:O(N)空间复杂度:O(1) 时间复杂度:O(N)空间复杂度:O(1) 时间复杂度:O(N)空间复杂度:O(N)

IronMurphy的博客 401

算法训练营第7天|142. 环形链表

第一次做环形链表找入口的题目,一开始完全看不懂快慢指针的原理。通过学习龟兔赛跑算法,明白了先用快慢指针判断链表是否有环,相遇后再把慢指针移回头结点,两个指针同步走,再次相遇的位置就是入环点。这次解题让我学会了用双指针优化空间,不用额外数组和哈希表,代码简洁高效,也理解了链表环问题的经典解法。

m0_75234391的博客 121

代码随想录训练营第四天|LeetCode 24、19、面试题02.07、142

链表

gin7773的博客 173
上一篇: LeetCode 139. 单词拆分(记忆化搜索 dp
下一篇: lc 18. 四数之和
RedemptionC
博客等级 码龄11年 103粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值