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

LeetCode - 876. 链表的中间结点

题目

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

快慢指针解法

初始化两个指针:

  • 慢指针(slow):每次移动一步
  • 快指针(fast):每次移动两步

同时移动两个指针:

  • 当fast指针到达链表末尾或者倒数第二个节点时,slow指针正好位于链表的中间位置
  • 如果链表长度为奇数,slow指向中间节点
  • 如果链表长度为偶数,slow指向第二个中间节点

返回结果:

  • 返回slow指针所指的节点

读者可能出现的错误写法

class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* slow = head;ListNode* fast = head;while(fast){slow = slow->next;fast = fast->next->next;}return slow;}
};

缺少终止条件检查:

  • 这个while循环只检查了fast是否为空,但没有检查fast->next
  • 当fast->next为空时,访问fast->next->next会导致空指针错误

指针移动逻辑:

  • 如果链表只有一个节点,fast不为空,但fast->next为空
  • 此时执行fast = fast->next->next会导致空指针错误

正确的写法 

class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* slow = head;ListNode* fast = head;while(fast&&fast->next){slow = slow->next;fast = fast->next->next;}return slow;}
};
http://www.xdnf.cn/news/742843.html

相关文章:

  • Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤
  • 第六十二节:深度学习-加载 TensorFlow/PyTorch/Caffe 模型
  • 【HW系列】—溯源与定位—Linux入侵排查
  • day07
  • c/c++的opencv车牌识别
  • vscode不满足先决条件问题的解决——vscode的老版本安装与禁止更新(附安装包)
  • 5.2 初识Spark Streaming
  • 进程间通信IV System V 系列(linux)
  • 机器学习与深度学习06-决策树02
  • C++23 已弃用特性
  • 前端面试准备-4
  • 细说C语言将格式化输出打印至标准输出流的函数 printf、_printf_l、wprintf、_wprintf_l
  • 第十五篇:MySQL 高级实战项目:构建高可用、可观测、性能优化一体化数据库平台
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
  • 流媒体基础解析:音视频封装格式与传输协议
  • Kafka数据怎么保障不丢失
  • 深拷贝和浅拷贝
  • leetcode77.组合:回溯算法中for循环与状态回退的逻辑艺术
  • tmux基本原理
  • OpenLayers 图形交互编辑
  • Redis最佳实践——安全与稳定性保障之访问控制详解
  • VMware-workstation安装教程--超详细(附带安装包)附带安装CentOS系统教程
  • 【Docker项目实战篇】Docker部署PDF查看器PdfDing
  • Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程
  • Azure DevOps 管道部署系列之二IIS
  • 腾讯面试手撕题:返回行递增有序矩阵第k小的元素
  • 【教学类-36-10】20250531蝴蝶图案描边,最适合大小(一页1图1图、2图图案不同、2图图案相同对称)
  • C++ 重载(Overload)、重写(Override)、隐藏(Hiding) 的区别
  • LiquiGen流体导入UE
  • STM32 HAL库函数学习 CRC篇