1. 程式人生 > 其它 >Leetcode 876. 連結串列的中間結點

Leetcode 876. 連結串列的中間結點

* 給定一個頭結點為 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
* middleNode(ListNode* head) { ListNode* fast=head; ListNode* slow=head; while(fast!=nullptr&&fast->next!=nullptr){ slow=slow->next; fast=fast->next->next; } return slow; } };
聯絡方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=