单链表OJ题:LeetCode--876.链表的中间结点

简介: LeetCode--876.链表的中间结点:详细解题过程以及图解和完整代码。

朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode中876题:链表的中间结点

数 据 结 构:数据结构专栏

作          者:stackY、

C  语   言  :C语言专栏

LeetCode :LeetCode刷题训练营

LeetCode--876.链表的中间结点: https://leetcode.cn/problems/middle-of-the-linked-list/description/

目录

1.题目介绍

2.实例演示

3.题解思路


1.题目介绍

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

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

image.gif编辑

2.实例演示

image.gif编辑

3.题解思路

寻找链表的中间结点也是一个非常经典的快慢指针的例题,这道题最方便、最简单的做法就是快慢指针,给定一个快指针和慢指针,慢指针一次走一步,快指针一次走两步,直到快指针走到空或者快指针的下一个结点为空时,这时的慢指针指向的结点就是中间结点,对于偶数个结点个数也同样适用,如果时偶数个结点,那么快指针指向空时,慢指针指向的就是中间结点的第二个结点 ,这里要注意如果只有一个结点只需要返回头结点就可以了。

image.gif编辑

image.gif编辑

 

代码演示:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* middleNode(struct ListNode* head){
    //快慢指针
    struct ListNode* fast = head;
    struct ListNode* slow = head;
    //找中间结点
    //如果只有一个结点也直接返回
    while(fast && fast->next)
    {
        fast = fast->next->next;
        slow = slow->next;
    }
    return slow;
}
image.gif

image.gif编辑

今天的博客就分享到这里,喜欢的老铁留下你的三连,感谢感谢!我们下期再见!!

目录
相关文章
|
1天前
|
算法 Java C语言
【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)
【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)
5 1
|
8天前
|
算法 C语言 容器
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145(下)
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145
26 7
|
8天前
|
C语言
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145(中)
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145
22 1
|
8天前
|
算法 C语言 C++
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145(上)
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145
13 1
|
9天前
题目----力扣--回文链表
题目----力扣--回文链表
17 0
|
9天前
题目----力扣--合并两个有序链表
题目----力扣--合并两个有序链表
13 0
|
9天前
题目----力扣--反转链表
题目----力扣--反转链表
17 0
|
9天前
题目----力扣--链表的中间结点
题目----力扣--链表的中间结点
6 0
|
10天前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
18 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
9天前
|
算法
"刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 "
该文段是一篇关于编程题目的解答,主要讨论如何找到数组中所有不同平均值的个数。作者首先使用排序和哈希集来解决,将数组转为列表排序后,通过双指针计算平均值并存入哈希集以去重。然后,作者发现可以优化方案,通过双指针在排序后的数组中直接计算两数之和,用哈希集记录不重复的和,从而避免实际计算平均值,提高了算法效率。最终代码展示了这两种方法。
19 0