題目:

官網題目連結

根據題目敘述,會給一個由 N 個整數組成的陣列 A。需找出 A 中沒有出現且大於 0 的最小正整數。
例如輸入 A=[1, 3, 6, 4, 1, 2],答案應為 5。
A=[1, 2, 3],答案應為 4。
A=[-1, -3],答案應為 1。

  • N 是範圍 [1~100000] 的整數。
  • 陣列 A 裡的元素都是範圍 [−1000000~1000000] 的整數。

解法:

第一時間還是想到了記憶法,先遍歷 A 記錄走過的不重複合法值,之後再遍歷記錄到的合法值來找出第一個 合法總數+1 的範圍內沒有記錄到的合法值。

總覺得還有機會想出跟 MaxCounters 一樣將當前最小值與合法最小值分開存的方法,就不用分兩次遍歷,但目前仍未想到。

  • 時間複雜度 O(N)
  • 空間複雜度 O(N)

PHP 程式碼: