朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode中876题:链表的中间结点
数 据 结 构:数据结构专栏
作 者:stackY、
C 语 言 :C语言专栏
LeetCode :LeetCode刷题训练营
LeetCode--876.链表的中间结点: https://leetcode.cn/problems/middle-of-the-linked-list/description/
目录
1.题目介绍
给你单链表的头结点
head
,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
编辑
2.实例演示
编辑
3.题解思路
寻找链表的中间结点也是一个非常经典的快慢指针的例题,这道题最方便、最简单的做法就是快慢指针,给定一个快指针和慢指针,慢指针一次走一步,快指针一次走两步,直到快指针走到空或者快指针的下一个结点为空时,这时的慢指针指向的结点就是中间结点,对于偶数个结点个数也同样适用,如果时偶数个结点,那么快指针指向空时,慢指针指向的就是中间结点的第二个结点 ,这里要注意如果只有一个结点只需要返回头结点就可以了。
编辑
编辑
代码演示:
/** * 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; }
编辑
今天的博客就分享到这里,喜欢的老铁留下你的三连,感谢感谢!我们下期再见!!