大家好,欢迎来阅读子豪的博客(LeetCode刷题篇)
大家有什么宝贵的意见或建议可以在留言区留言
如果你喜欢我的博客,欢迎 素质三连 点赞 关注 收藏
我的码云仓库:补集王子 (YZH_skr) - Gitee.com
876. 链表的中间结点
https://leetcode-cn.com/problems/middle-of-the-linked/submissions/
思路一:
遍历两遍
先遍历一遍 记录链表长度 然后取半 再从前往后找中间值
思路二:
快慢指针
执行方式
慢指针一次走一步 快指针一次走两步
判断条件
只要 fast 活着 fast 的next 为NULL 就停止
结果
1.奇数:
有中间确定的中间结点
2.偶数:
没有中间确定的中间结点
题中说如果是偶数返回第二个中间结点
代码:
struct ListNode* middleNode(struct ListNode* head) { struct ListNode* fast,*slow; slow = fast = head; while(fast&&fast->next) { slow = slow->next; fast = fast->next->next; } return slow; }
做这类题还是得多画图呀!