Leetcode 876. Middle of the Linked List



首先觀察奇數與偶數的關係,上面範例為長度5的linked list,會取index 2。長度6的linked list會取index 3。所以即 ans = arr [n / 2]
求Linked list中間的數字,我的方法為:


先用一個指針來做為暫存head的指針。先用它遍歷過整個linked list,得length i。j = 0從頭指針開始,直到 j == i。每一個iteration都會讓head = head->next。最後return head。




另外有發現比較猛的解法:

用兩個指針來做,fast每次移動兩步,slow每次移動一步。

1->2->3->4->5->NULL
f            f            f
s     s     s

1->2->3->4->5->6->NULL
 f           f             f            f
s     s     s     s
    ListNode* middleNode(ListNode* head) {
        ListNode *slow = head, *fast = head;
        while (fast && fast->next)
            slow = slow->next, fast = fast->next->next;
        return slow;
    }

留言

這個網誌中的熱門文章

面試 (網路搜尋的資源)

bitwise operation 面試考題