本文主要是介绍Leetcode#876. 链表的中间结点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解题思路:
- 寻找中间节点的问题,最好的方法就是一个快指针,一个慢指针;
- 细节:如果链表节点数是偶数,需要返回的是中间两个节点的第二个,可以通过快指针的状态区分链表节点是奇是偶
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* middleNode(ListNode* head) {if(head == NULL || head->next == NULL)return head;ListNode* p = head;ListNode* q = head;while(q->next && q->next->next){p = p->next;q = q->next->next;}if(q->next)return p->next;elsereturn p;}
};
这篇关于Leetcode#876. 链表的中间结点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!