题目:

给定一个头结点为 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 之间。

思路与算法:

单指针法
我们可以对方法一进行空间优化,省去数组 A。

我们可以对链表进行两次遍历。第一次遍历时,我们统计链表中的元素个数 N;第二次遍历时,我们遍历到第 N/2 个元素(链表的首节点为第 0 个元素)时,将该元素返回即可。

复杂度分析

时间复杂度:O(N)O(N),其中 NN 是给定链表的结点数目。

空间复杂度:O(1)O(1),只需要常数空间存放变量和指针。

代码:

class Solution {public ListNode middleNode(ListNode head) {int n = 0;ListNode cur = head;while (cur != null) {++n;cur = cur.next;}int k = 0;cur = head;while (k < n / 2) {++k;cur = cur.next;}return cur;}
}

leetcode 876. 链表的中间结点 做题笔记相关推荐

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

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

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

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

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

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

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

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

  5. LeetCode Java刷题笔记—876. 链表的中间结点

    876. 链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点. 简单难度.使用快慢指针即可,快指针fast每次走2步,慢指针slow ...

  6. LeetCode刷题 876链表的中间结点

    876. 链表的中间结点 难度简单550收藏分享切换为英文接收动态反馈 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[ ...

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

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

  8. leetcode 876.链表中间结点

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

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

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

最新文章

  1. DC学院爬虫学习笔记(六):浏览器抓包及headers设置
  2. 这八大互联网金融商业模式,你都知道吗?
  3. manjaro笔记本显卡驱动_从入门到高端!AMD Radeon RX 500系列移动显卡全解析
  4. 返回后的数据处理_【掘金使用技巧2】掘金返回数据中时间的处理方法
  5. 2020中国网络媒体发展报告
  6. 使用sklearn预测走势_Prophet: 时间序列预测库
  7. 如何成为一名更出色的开发者?
  8. Tolua 报错cannot load incompatible bytecode
  9. 关于断点续传的那些事
  10. 啊哈c语言逻辑推箱子答案,啊哈C语言!逻辑的挑战(修订版)
  11. notepad实现垂直标签
  12. SPSS 数据清理-基础
  13. 上课笔记-机器学习(5)-美国人口普查数据进行收入预测分类
  14. 网易2019实习生招聘编程题之数对
  15. 写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出。
  16. 官方Nexus软件下载教程
  17. 模电学习第一天--PN结梳理
  18. WPF编程;上位机编程;C#编程;仿QQ基础实现(一)之界面预览
  19. 拇指锁屏APP:时代新起锁屏之秀
  20. 关于 中国操作系统 COS 的随笔

热门文章

  1. IE 浏览器已“死”,一个时代的终结
  2. es6 javascript属性的可枚举性
  3. Sony蓝牙音箱连接Mac电脑音质变差
  4. 小米note_2014616 2014619 2015021 2015022_通用官方线刷包_救砖包_解账户锁
  5. 剑灵电五服务器位置,剑灵都有哪些区合区?
  6. RPATH $ORIGIN LD_LIBRARY_PATH和可移植 linux 二进制文件的描述
  7. 计算机黑屏一秒恢复,电脑经常黑屏几秒恢复,电脑黑屏一两秒后恢复
  8. iOS的安装包:deb、ipad、pxl
  9. Linux杀死指定端口的进程
  10. 过半985、单岗位2K+简历!速腾聚创如何开展校园招聘?