算法篇—链表的中间节点

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

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

示例 1:

输入:head = 1,2,3,4,5

输出:3,4,5

解释:链表只有一个中间结点,值为 3 。

示例 2:

输入:head = 1,2,3,4,5,6

输出:4,5,6

解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

解题分析:

可以创建两个指针slow和fast都指向head,slow每次走一步,fast每次走两步,如果是奇个链表,那么fast走到最后一个链表停止,如果是偶个链表,fast将走到NULL!

c 复制代码
struct ListNode* middleNode(struct ListNode* head) {
    if(head==NULL)
   		return NULL;
    struct ListNode*slow=head;
    struct ListNode*fast=head;
    while(fast&&fast->next)//只要是其中的一个就停止,表示slow走到终点了
    {
        slow=slow->next;
        fast=fast->next->next;
    }
    return slow;//返回slow(中间的节点)
}
相关推荐
Frostnova丶1 小时前
(19)LeetCode 54. 螺旋矩阵
算法·leetcode·矩阵
麻瓜老宋1 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十步,魔法数修复、测试分隔符、位运算截断检查、进制溢出检查
c语言·开发语言·atomcode
Frostnova丶1 小时前
(18)LeetCode 73. 矩阵置零
算法·leetcode·矩阵
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-11 分段计算居民水费(C语言实现)
c语言·开发语言·算法
得物技术2 小时前
推荐系统体验的数字化突破:得物自动化评测平台的技术实践|AICon 文章整理
算法·架构·llm
VALENIAN瓦伦尼安教学设备2 小时前
转子/行星/平行轴齿轮箱综合故障模拟实验台可复现常见机械问题
大数据·数据库·人工智能·嵌入式硬件·算法
rannn_1112 小时前
【力扣hot100】哈希表专题——从两数之和到最长连续序列
java·算法·leetcode·哈希
pluviophile_s2 小时前
数据结构:第6讲:树与二叉树
数据结构·笔记
小保CPP2 小时前
OpenCV C++基于极值区域滤波算法的场景文本检测(OCR)
c++·人工智能·opencv·算法·计算机视觉·ocr