给定一个头结点为 head 的非空单链表,返回链表的中间结点。

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

示例 1:
输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。

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

思路1
遍历链表,求出长度,再次遍历找到中间结点,需要遍历链表两次,时间复杂度O(N).

思路2
要求只能遍历链表一次。

使用快慢指针,慢指针一次走一步,快指针一次走两步。

(1)链表元素个数为奇数

初始条件

slow走一步,fast走两步


奇数个,快指针走到尾结束。

(2)链表元素个数为偶数

偶数个,快指针走到尾的下一个结束。

综合上面两种情况,只要fast为空或者fast->next为空,那么就结束。

struct ListNode
{int val;struct ListNode* next;
};struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow = head;struct ListNode* fast = head;while (fast != NULL && fast->next!= NULL){slow = slow->next;fast = fast->next->next;}return slow;
}

leetcode 876.链表的中间结点相关推荐

  1. LeetCode 876——链表的中间结点

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

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

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

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

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

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

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

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

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

  6. leetcode 876.链表中间结点

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

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

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

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

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

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

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

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

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

最新文章

  1. 经验分享:CSS浮动(float,clear)通俗讲解
  2. RHEL 6上KVM的安装配置及使用-将物理接口桥接到桥接器
  3. 函数式编程与REST的思考
  4. api怎么写_使用Node.js原生API写一个web服务器
  5. python做的游戏可以导出吗_Python for RenderDoc批量导出模型和贴图
  6. matplotlib画图设置线条透明度
  7. SpringBoot2 整合 Drools规则引擎,实现高效的业务规则
  8. 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
  9. c语言共享内存储存结构体,C语言共享内存使用思路利用结构体
  10. for update在mysql中使用
  11. centos7安装samba服务,以及设置权限分配
  12. [终极精简版][图解]Nginx搭建flv mp4流媒体服务器
  13. 蓝桥杯单片机数码管动态显示_单片机期末整理
  14. 大学计算机第四版蒋加伏ppt,大学计算机基础 普通高等教育十一五 国家级规划教材 教学课件 作者 蒋加伏 王宇 第5章 Powerpoint 2003演示文稿制作基础.ppt...
  15. authc过滤器 shiro_shiro原理之过滤器
  16. ffmpeg java 实时视频流转码
  17. python ——找出 每行中长度超过3的单词
  18. 利用 Eclipse Visual Editor 项目构建 GUI 应用程序
  19. Nexmo 短信平台接口 遇到的坑
  20. 判断深度学习的效果好坏loss和val_loss比较

热门文章

  1. Xcode 中设置APP的图标(Icon)和启动页面(Launch Screen)
  2. mysql中+desc用法_mysql desc(DESCRIBE)命令实例讲解
  3. PAT 乙级1068 万绿丛中一点红(20 分)
  4. Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)
  5. unity 如何开发手机App
  6. android 编程app_2020年用于Android App开发的顶级编程语言
  7. 10 年工作经验的求职经历
  8. python中csv文件是什么_Python中的csv文件
  9. Vue 项目中各种痛点问题及方案(建议收藏)
  10. surface pro的TF卡有时候不感应不到,需要重新插拔?