LeetCode0876-連結串列中間結點
阿新 • • 發佈:2021-10-30
雙指標
經典的快慢指標,所以收錄了
題目
給定一個頭結點為 head 的非空單鏈表,返回連結串列的中間結點。
如果有兩個中間結點,則返回第二個中間結點
輸入:[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.
題解
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode middleNode(ListNode head) { ListNode sin = head ; ListNode dou = head ; ListNode ans ; while(dou!=null && dou.next !=null){ sin = sin.next ; dou = dou.next.next; } ans = sin; return ans ; } }
使用兩個快慢指標,一個走一步一個走兩步。走的快的走到頭了就是找到了