当前位置: 首页 > news >正文

【每日力扣】141. 环形链表与142. 环形链表 II

在这里插入图片描述

🔥 个人主页: 黑洞晓威
😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害

141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false

解题思路

为了判断链表中是否存在环,可以使用快慢指针的方法。快指针每次向前移动两步,慢指针每次向前移动一步,如果链表中存在环,快指针最终会追上慢指针,如果不存在环,快指针会到达链表尾部。

具体步骤如下:

  1. 初始化快慢指针,快指针每次移动两步,慢指针每次移动一步。
  2. 迭代遍历链表,如果快指针追上了慢指针,则链表存在环;如果快指针到达了链表尾部,则链表不存在环。

代码实现

public class Solution {public boolean hasCycle(ListNode head) {if (head == null || head.next == null) {return false;}ListNode slow = head;ListNode fast = head.next;while (slow != fast) {if (fast == null || fast.next == null) {return false;}slow = slow.next;fast = fast.next.next;}return true;}
}

142. 环形链表 II

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

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos-1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

解题思路

要寻找环形链表的入口节点,可以使用快慢指针的方法。当快慢指针相遇时,让其中一个指针重新指向头节点,并让两个指针以相同速度向前移动,再次相遇的节点就是环的入口节点。这个方法可以证明在相遇点后,再次相遇的节点就是环的入口。

具体步骤如下:

  1. 使用快慢指针找到两指针相遇的节点。
  2. 将其中一个指针重新指向头节点,保持另一个指针在相遇点。
  3. 两个指针以相同速度向前移动,再次相遇的节点即为环的入口节点。

代码实现

public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) {fast = head;while (slow != fast) {slow = slow.next;fast = fast.next;}return slow;}}return null;}
}
http://www.lryc.cn/news/343306.html

相关文章:

  • 考研逆天改命,双非逆袭985!
  • 群晖上部署农场管理系统farmOS
  • Python中的property装饰器:深入解析与实用示例
  • 【Linux】使用Jenkins + svn + springboot自动构建jar包并自动打包在服务器上运行
  • 数据库、OS内核安全等精彩继续!龙蜥大讲堂 5 月直播预告来袭
  • ubuntu20文件安装和卸载cuda11.6
  • 如何备份firewalld的配置信息?
  • 我们该如何看待AIGC(人工智能)
  • POWERBI==官网教程
  • 自然语言处理(NLP)技术有哪些运用?
  • java spring 09 Bean的销毁过程 上 在docreatebean中登记要销毁的bean
  • 杰发科技AC7801——支持的纠错功能
  • spring boot运行过程中动态加载Controller
  • 学习软考----数据库系统工程师25
  • RTMP 直播推流 Demo(一)—— 项目配置与视频预览
  • 安卓获取SHA
  • 【Qt 学习笔记】Qt常用控件 | 输入类控件 | Dial的使用及说明
  • 【C语言】项目实践-贪吃蛇小游戏(Windows环境的控制台下)
  • 在做题中学习(50):搜索插入位置
  • 【mysql】mysql单表查询、多表查询、分组查询、子查询等案例详细解析
  • 【Gateway远程开发】0.5GB of free space is necessary to run the IDE.
  • 普通组件的注册-局部注册和全局注册
  • Apache Dubbo知识点表格总结
  • 电路板/硬件---器件
  • STC15W1K16S和VC6.0串口通讯收发测试实例
  • Python程序设计 函数(三)
  • linux之ssh
  • excel如何将多列数据转换为一列?
  • 【Java 刷题记录】前缀和
  • NVIDIA: RULER新测量方法让大模型现形