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

Day81 | 灵神 | 快慢指针 链表的中间结点 环形链表


Day81 | 灵神 | 快慢指针 链表的中间结点 环形链表

876.链表的中间结点

876. 链表的中间结点 - 力扣(LeetCode)

思路:

设置两个指针,一个快指针r一个慢指针l

初始都是头结点

我们要求的是中间节点

所以快指针走两步,慢指针走一步,那么就可以在快指针走到末尾时慢指针就指向中间结点

链表长度为奇数

image-20250403084802147

链表长度为偶数

image-20250403084833124

所以就是快指针为空或者下一个为空,那就停止循环

完整代码:

class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode *l=head;
        ListNode *r=head;
        while(r!=nullptr&&r->next!=nullptr)
        {
            l=l->next;
            r=r->next->next;
        }
        return l;
    }
};

141.环形链表

141. 环形链表 - 力扣(LeetCode)

思路:

有了上一题的基础我们很容易想到设置快慢指针

只要有环,那快指针总有追上慢指针的一天

以下是灵神的题解(比笔者说的好理解,就贴过来了

想象兔子和乌龟在同一跑道上,一个速度快、另一个速度慢。如果跑道有环,兔子必然在一段时间后追上乌龟。对于链表来说,如果在链表中引入两个以不同速度(一个比另一个快一倍)前进的指针,在链表存在环的情况下,这两个指针必定会相遇。

兔子会不会「跳过」乌龟,从来不会和乌龟相遇呢?

答:这是不可能的。如果有环的话,那么兔子和乌龟都会进入环中。这时用「相对速度」思考,乌龟不动,兔子相对乌龟每次只走一步,这样就可以看出兔子一定会和乌龟相遇了。

完整代码:

⚠注意:代码比较两个节点的时候,比较的是内存地址是否一致,即节点是否相同,并没有比较节点的 val。

class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode* l=head;
        ListNode* r=head;
        while(r!=nullptr&&r->next!=nullptr)
        {
            r=r->next->next;
            l=l->next;
            if(r==l)
                return true;
        }
        return false;
    }
};
http://www.dtcms.com/a/130358.html

相关文章:

  • 深入理解计算机操作系统(持续更新中...)
  • [dp9_子数组] 单词拆分 | 环绕字符串中唯一的子字符串
  • ​STM32H723 iPerf 调试笔记:MemManage_Handler 问题分析与解决
  • 入门到精通,C语言十大经典程序
  • 开发一款游戏需要哪些岗位角色参与?
  • CAN协议学习笔记1
  • 文章记单词 | 第29篇(六级)
  • linux下的目录文件管理和基本文件管理的基本操作
  • 5.3 GitHub订阅系统核心架构解密:高并发设计与SQLite优化实战
  • 「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题
  • HarmonyOS应用开发指南
  • stm32+ADS1256称重模块,单通道称,多通道称(例如地磅)
  • MySQL一对多关系--多对多关系之间的区别
  • RCFile数据读取流程
  • 前缀和--
  • 消息中间件——RocketMQ(一)
  • 【复旦微FM33 MCU 底层开发指南】高级定时器ATIM
  • 齐次坐标系统:什么是齐次坐标?为什么要引入齐次坐标?
  • Go - 内存逃逸
  • C语言--实现图的基本操作
  • 探秘 LangChain 函数定义
  • Java 性能优化:从原理到实践的全面指南
  • #systemverilog# 关于基于systemveriog验证平台的RTL+TB文件编译顺序问题的讨论
  • c++11--std::forwaord--完美转发
  • zk源码-7.ZAB协议和数据存储二
  • arm_math.h、arm_const_structs.h 和 arm_common_tables.h
  • 游戏引擎学习第217天
  • Day14:关于MySQL的索引——创、查、删
  • 【腾讯云智】20250329笔试算法题
  • QT聊天项目开发DAY02