IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 力扣_876. 链表的中间结点 -> 正文阅读

[数据结构与算法]力扣_876. 链表的中间结点

力扣

题目描述中有这个链表是非空单链表,它的长度不是奇数就是偶数,然后我们要找到它的中间结点,所以要分两种情况。

?1.在奇数的情况下,剩下要走的步数是偶数,因为fast和slow的起点位置是head
2.slow走1步,fast走2步
3.slow要走到中间时,要花费L/2步,而fast是slow的两倍,则slow走到中间时,正好走到末尾

?1.偶数时,剩下的步数走奇数步。

2.fast走两步,slow走一步,所以要想fast走到尾,必须要走出去。

3.slow走到中间的第二个需要走L/2步,fast要走L步,L是偶数,但剩下的是奇数,所以就走出去了。

?所以现在有两种情况,一是fast走到尾,二是fast走到NULL。?

这个方法叫:快慢指针法。

struct ListNode* middleNode(struct ListNode* head){
    struct ListNode* fast = head, *slow = head;
    while (fast && fast->next) {
        slow = slow->next;
        fast = fast->next->next;
    }
    return slow;
}

?这个while循环的表达式,我们想的是while循环结束的条件,但是while表达式写的是继续的条件。

只要fast不为空并且fast->next不为空就继续迭代。

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

空间复杂度:O(1)?,只需要常数(不变的数)的空间存放slow和fast两个指针。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:25:52  更:2022-03-17 22:29:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:31:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码