Leetcode 876. Middle of the Linked List
首先觀察奇數與偶數的關係,上面範例為長度5的linked list,會取index 2。長度6的linked list會取index 3。所以即 ans = arr [n / 2]
先用一個指針來做為暫存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;
}
留言
張貼留言