題目描述
https://leetcode.cn/problems/middle-of-the-linked-list/description/
給你單連結串列的頭結點 head
,請你找出並返回連結串列的中間結點。
如果有兩個中間結點,則返回第二個中間結點。
示例 1:
示例 2:
思路分析
用兩個指標 slow
與 fast
一起遍歷連結串列。slow
一次走一步,fast
一次走兩步。那麼當 fast
到達連結串列的末尾時,slow
必然位於中間。
程式碼實現
/** * 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) { if(head==null) return null; ListNode slow = head, fast = head; while(fast!=null && fast.next!=null){ slow = slow.next; fast = fast.next.next; } return slow; } }