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

【LeetCode】141.环形链表

题目

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

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

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 链表中节点的数目范围是 [0, 104]
  • -105 <= Node.val <= 105
  • pos 为 -1 或者链表中的一个 有效索引 。

解答

源代码

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public boolean hasCycle(ListNode head) {ListNode fast = head;ListNode slow = head;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if (fast == slow) {return true;}}return false;}
}

总结

这里使用双指针学习一种新思路——快慢指针,快指针每次移动两个节点,慢指针每次移动一个节点,若链表中存在环形,那么就像跑道上的追及问题,快慢指针一定会相遇。

在进行条件判断和指针移动时要注意包含各种特殊情况,比如只有一个节点时,避免空指针问题。

http://www.lryc.cn/news/98714.html

相关文章:

  • nodejs+vue+elementui汽车销售网站
  • spring boot整合kaptcha验证码
  • 【Linux下6818开发板(ARM)】在液晶屏上显示RGB颜色和BMP图片
  • React的hooks---useLayoutEffect
  • 北京创业孵化器汇总
  • 电信软件的过去、现在和未来:推动核心网发展的关键力量
  • 2023年全国程序员薪酬排行天梯榜
  • 设计模式-工厂模式
  • HummerRisk V1.3.0 发布
  • SkyWalking链路追踪中Trace概念以及Trace与span的关系
  • 美容店预约小程序制作教程详解
  • 什么是内存泄漏及如何防护内存泄漏
  • 【libuv】httpserver启用ssl 及 播放的日志打印
  • 13、ffmpeg使用nvidia显卡对OAK深度相机进行解码和编码
  • 自动化测试如何做?搭建接口自动化框架从0到1实战(超细)
  • 安装Python之后 安装库报错 There was an error checking the latest version of pip.
  • "科技与狠活"企业级无代码开发MES系统,一周实现数字化
  • 超实用的品牌软文推广方案分享,纯干货
  • 网络安全(黑客)8大工具
  • 重启Linux服务器 Oracle 数据库步骤
  • kaggle新赛:Bengali.AI 语音识别大赛赛题解析
  • 解放Linux内存:释放缓存(linux释放缓存)
  • 前端跨域解决方案
  • 脚手架(vue-cli)的安装详细教程
  • yolov5 onnx模型 转为 rknn模型
  • Mybatis-Flex
  • C++ | 红黑树以及map与set的封装
  • 逻辑斯特回归
  • OpenCV 算法解析
  • springboot创建并配置环境(一) - 创建环境