1. 题目

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。

示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.

示例 2: 输入:[1,2,3,4,5,6] 输出:此列表中的结点 4 (序列化形式:[4,5,6]) 由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。

提示: 给定链表的结点数介于 1 和 100 之间。

2. 思路

定义快慢两个指针,从头结点开始,慢指针每次向后移动一个结点,快指针每次向后移动两个结点。

  • 若链表有奇数个结点,当快指针指向最后一个结点时,慢指针即指向链表的中间结点
  • 若链表有偶数个结点,当快指针指向 NULL 时,慢指针即指向链表的中间结点
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* slow = head;  // 慢指针指向头结点ListNode* fast = head;  // 快指针指向头结点// 奇数结点快指针指向最后一个结点结束// 偶数结点快指针指向 NULL 结束while(fast && fast->next)   {slow = slow->next; //慢指针前进一步fast = fast->next->next; //快指针前进两步}return slow;    // 返回中间结点}
};
复制代码

获取更多精彩,请关注「seniusen」!

LeetCode 876——链表的中间结点相关推荐

  1. Leetcode 876. 链表的中间结点 (每日一题 20210918)

    给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1:输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) ...

  2. LeetCode 876. 链表的中间结点(快慢指针)

    1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 2. 解题 快慢指针法 class Solution {public:List ...

  3. leetcode 876. 链表的中间结点 做题笔记

    题目: 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[ ...

  4. LeetCode 876. 链表的中间结点

    原题链接 解题思路:快慢指针,快指针走两步,慢指针走一步.快指针到NULL慢指针自然到中间位置 /*** Definition for singly-linked list.* struct List ...

  5. leetcode 876.链表中间结点

    链表中间结点 leetcode题目链接:876. 链表的中间结点 一.朴素解法 最直观的思路,因为不知道这个链表的长度,就先通过一次循环统计链表的长度len 之后第二次遍历,直到找到中间结点,输出 / ...

  6. 每日一道leetcode(python)876. 链表的中间结点

    每日一道leetcode(python)876. 链表的中间结点 2021-08-19 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1 ...

  7. JavaScript——leetcode算法入门876. 链表的中间结点【双指针专题】

    题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式: ...

  8. 【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点

    目录 一.力扣第206题:反转链表 1.思路一 2.思路二 二.力扣第876题:链表的中间结点 1.思路一 2.思路二 总结 一.力扣第206题:反转链表 题目链接:206. 反转链表 - 力扣(Le ...

  9. LeetCode Algorithm 876. 链表的中间结点

    876. 链表的中间结点 Ideas 这题直接秒杀吧,快慢指针,快指针一次走两步,慢指针一次走一步,快指针到头之后慢指针正好到链表中间. Code C++ class Solution {public ...

最新文章

  1. linux 挂载硬盘_Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令...
  2. try~Catch语句中异常的处理过程
  3. 优秀平面设计师必须拥有的设计思维
  4. Javascript构造函数的继承
  5. toString(radix)
  6. mysql hint use force ignore_MySQL实时在线备份恢复方案
  7. Hacktoberfest活动导致GitHub捐款近5万
  8. java 筛选地区语句_Java选择语句
  9. java mail header_java使用mail发送邮件时出现乱码如何解决
  10. 小米8吃鸡战斗服务器响应超时,小米8使用1天真实体验,看完再决定买不买?
  11. iOS设计模式——委托(delegate)
  12. yii selenium php,Yii 单元测试用例
  13. 谷歌胜诉!10年Java版权案终结;京东、美团等10家平台承诺不用大数据杀熟;百度网盘海外版上传下载不限速 | EA周报
  14. ai作诗——分享好用人工智能作诗工具
  15. 点线面的特点_描述点线面状事物分布特征
  16. redis主从,哨兵模式配置
  17. Java 从word中提取文字信息(开发笔记)
  18. ifix5.8连接s7-300 plc的点-通过s7a power tool
  19. Proteus-中英文对照
  20. 输入手机号格式344展示形式(只允许数字)

热门文章

  1. 可穿戴的脑机接口设备将运动意念转化为行动
  2. 关于事件相关电位P300应用于视频游戏的研究
  3. 虚幻UE4常见问题最全集合
  4. 张亚勤:未来10年AI+生物制药大有可为,我们正开展破壁计划 | MEET2022
  5. AlphaFold2被超越!中国团队刷新全球蛋白质结构预测纪录,大牛彭健创业项目一鸣惊人...
  6. AI,来感受被「分手厨房」支配的恐惧吧!
  7. 谷歌开源预训练新范式BiT,准确率提高近25%!网友评价:CV界的BERT
  8. 6000星人气深度学习资源!架构模型技巧全都有,图灵奖得主LeCun推荐
  9. 性能压测,SQL查询异常
  10. python os.walk()