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

力扣876:链表的中间结点

力扣876:链表的中间结点

题目描述:
给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。
示例 2:
在这里插入图片描述

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

提示:

链表的结点数范围是 [1, 100]
1 <= Node.val <= 100

分析:
快慢指针思想

定义两个指针,快指针fast,慢指针slow,从头开始遍历:

fast一次走两步,慢指针一次走两步

遍历结束后,慢指针所在的节点就是中间节点,返回slow即可

那么什么时候遍历结束呢?

链表为奇数个时:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
fast->next为空时,遍历结束。

链表为偶数个时:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
fast为空时,遍历结束。
在这里插入图片描述

代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* middleNode(struct ListNode* head) {struct ListNode*fast=head,*slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;}return slow;
}
http://www.lryc.cn/news/225045.html

相关文章:

  • 三菱FX3U系列—原点回归指令
  • ES常用查询命令
  • 【Qt之元对象系统】
  • 基于FPGA的EMAC模块与FIFO模块:高速数据传输与存储
  • 大数据毕业设计选题推荐-农作物观测站综合监控平台-Hadoop-Spark-Hive
  • 高校教务系统登录页面JS分析——长沙理工大学教务系统
  • element-ui的form校验失败
  • java数据结构--阻塞队列
  • 使用p2p实现Linux内网快速分发文件
  • Android Studio报错:connect refused
  • ubuntu 源码编译安装make过程很慢问题解决
  • 深度学习 opencv python 实现中国交通标志识别 计算机竞赛
  • 希尔排序原理
  • 测试用例的设计方法(全):判定表驱动分析方法
  • node 第十七天 使用rsa非对称加密 实现前后端加密通信 JSEncrypt和node-rsa
  • Spring-依赖注入findAutowireCandidates源码实现
  • 单页面应用与多页面应用的区别?
  • 模型预处理的ToTensor和Normalize
  • nodejs express multer 保存文件名为中文时乱码,问题解决 originalname
  • 大数据之LibrA数据库系统告警处理(ALM-12035 恢复任务失败后数据状态未知)
  • 汽车生产RFID智能制造设计解决方案与思路
  • 讲解机器学习中的 K-均值聚类算法及其优缺点。
  • 开源DB-GPT实现连接数据库详细步骤
  • java学习part01
  • 渗透测试学习day3
  • 【Proteus仿真】【Arduino单片机】数码管显示
  • 【Bug】Python利用matplotlib绘图无法显示中文解决办法
  • Docsify 顶部的导航是如何配置
  • 最详细的LightGBM参数介绍与深入分析
  • blender动画制作全流程软件