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

链表算法之【获取链表开始入环的节点】

目录

LeetCode-142题


LeetCode-142题

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

class Solution {public ListNode detectCycle(ListNode head) {// checkif (head == null || head.next == null)return null;// 链表是否有环的标识,初始值设置为falseboolean hasCycle = false;// 定义两个指针,一个快指针[fast],一个慢指针[slow],并且它们开始都指向头节点ListNode fast = head;ListNode slow = head;// fast指针一次前进两个节点,slow指针一次前进一个节点while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;// 如果fast和slow能相遇,链表存在环if (fast == slow) {hasCycle = true;break;}}// 链表无环,返回nullif (!hasCycle) {return null;}// fast指针回到初始位置,也就是头节点// 快慢指针都每次前进1个节点,再次相遇的位置就是第一次开始入环的节点位置fast = head;for (; ; ) {// 有可能在回到头节点就相遇if (slow == fast)return slow;slow = slow.next;fast = fast.next;if (slow == fast)return slow;}}private static class ListNode {int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}}
}

http://www.xdnf.cn/news/15400.html

相关文章:

  • 图生生AI模仿裂变:1分钟批量裂变素材图片!
  • MySQL数据库的基础操作
  • C++后端面试八股文
  • 深入解析Hadoop YARN架构设计:从原理到实践
  • 5、qt系统相关
  • LLM表征工程还有哪些值得做的地方
  • linux打包固件shell脚本
  • FOC算法中SIMULINK一些常用模块(1)(个人留存)
  • 多客户端-服务器(select,poll)
  • 第二章 基于新版Onenet搭建云服务(stm32物联网)
  • elementPlus中的el-table实现合并单元格
  • MMKV 存储json list数据(kotlin)
  • 《Linux篇》自动化构建-make/Makefile
  • 自动润滑系统:从 “盲目养护“ 到智能精注的工业运维革命
  • MMaDA:多模态大型扩散语言模型
  • 动态规划题解_将一个数字表示成幂的和的方案数【LeetCode】
  • 互斥锁详解(操作系统os)
  • BERT系列模型
  • 前端工程化-构建打包
  • Flink数据流高效写入MySQL实战
  • Actor-Critic重要性采样原理
  • 九、官方人格提示词汇总(上)
  • 构造函数延伸应用
  • 数据结构 Map和Set
  • 一些git命令
  • SQL预编译:安全高效数据库操作的关键
  • Linux操作系统之信号概念启程
  • 【读书笔记】《C++ Software Design》第七章:Bridge、Prototype 与 External Polymorphism
  • IPC框架
  • [2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型