Codility Lesson MissingInteger
題目:
根據題目敘述,會給一個由 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 程式碼:
如果您喜歡我的文章,歡迎幫我在下面按5下讚!感謝您的鼓勵和支持!
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment