Leetcode 876. 連結串列的中間結點
阿新 • • 發佈:2022-02-07
* 給定一個頭結點為 head的非空單鏈表,返回連結串列的中間結點。
*
* 如果有兩個中間結點,則返回第二個中間結點。
*
*
*
* 示例 1:
*
*
* 輸入:[1,2,3,4,5]
* 輸出:此列表中的結點 3 (序列化形式:[3,4,5])
* 返回的結點值為 3 。 (測評系統對該結點序列化表述是 [3,4,5])。
* 注意,我們返回了一個 ListNode 型別的物件 ans,這樣:
* ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next
* = NULL.
*
*
* 示例2:
*
*
* 輸入:[1,2,3,4,5,6]
* 輸出:此列表中的結點 4 (序列化形式:[4,5,6])
* 由於該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。
*
*
*
*
* 提示:
*
*
* 給定連結串列的結點數介於1和100之間。
思路:快慢指標,快指標走兩步,慢指標走一步。判斷快指標以及快指標的下一步是否為空
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode聯絡方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=* middleNode(ListNode* head) { ListNode* fast=head; ListNode* slow=head; while(fast!=nullptr&&fast->next!=nullptr){ slow=slow->next; fast=fast->next->next; } return slow; } };