【刷题记录】链表的中间结点

简介: 【刷题记录】链表的中间结点

本系列博客为个人刷题思路分享,有需要借鉴即可。

1.题目链接:

T1:LINK

2.详解思路:

T1:

思路1:统计节点的个数,取半找节点

之后

struct ListNode* middleNode(struct ListNode* head) {
    //思路1:统计一下节点的个数,取中间值即可
    //计数
    int count = 0;
    struct ListNode* pcur = head;
    while(pcur)//遍历
    {
        count++;
        pcur = pcur->next;
    }
    //中间节点
    int mid = count / 2;
    struct ListNode* pmid = head;
    while(mid--)
    {
        pmid = pmid->next;
    }
    return pmid;
}

思路2:双指针法,走的快的指针一步走两个,慢的走一个

struct ListNode* middleNode(struct ListNode* head) {
    //思路2:快慢指针法
    struct ListNode* fast = head;
    struct ListNode* slow = head;
    while(fast && fast->next)//快指针走到头
    {
        slow = slow->next;
        fast = fast->next->next;
    }
    return slow;
}

完。


相关文章
|
2月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
76 1
|
4月前
|
程序员
【刷题记录】移除链表元素
【刷题记录】移除链表元素
|
1月前
|
存储 算法 搜索推荐
链表的中间结点
【10月更文挑战第24天】链表的中间结点是链表操作中的一个重要概念,通过快慢指针法等方法可以高效地找到它。中间结点在数据分割、平衡检测、算法应用等方面都有着重要的意义。在实际编程中,理解和掌握寻找中间结点的方法对于解决链表相关问题具有重要价值。
21 1
|
3月前
链表的中间结点
链表的中间结点
182 57
|
2月前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
18 0
|
4月前
|
Python
【Leetcode刷题Python】114. 二叉树展开为链表
LeetCode上114号问题"二叉树展开为链表"的Python实现,通过先序遍历二叉树并调整节点的左右指针,将二叉树转换为先序遍历顺序的单链表。
30 3
【Leetcode刷题Python】114. 二叉树展开为链表
|
4月前
|
算法
LeetCode第19题删除链表的倒数第 N 个结点
该文章介绍了 LeetCode 第 19 题删除链表的倒数第 N 个结点的解法,通过使用快慢双指针,先将快指针移动 n 步,然后快慢指针一起遍历,直到快指针到达链尾,从而找到倒数第 N 个结点的前一个结点进行删除,同时总结了快慢指针可减少链表遍历次数的特点。
LeetCode第19题删除链表的倒数第 N 个结点
|
4月前
【刷题记录】链表的回文结构
【刷题记录】链表的回文结构
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
56 5
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 18. 删除链表的节点
Leetcode题目"剑指 Offer 18. 删除链表的节点"的Python解决方案,通过使用双指针法找到并删除链表中值为特定数值的节点,然后返回更新后的链表头节点。
46 4