Codility Lesson Iterations BinaryGap
題目:
根據題目敘述,會需要將輸入的整數 N 轉成二進位,並找出任意夾在兩個 1 中間的最大 0 總數。
例如輸入 529,轉成二進位是 1000010001,答案就是 4,而如果沒有任何 0 是夾在兩個 1 中間的,則會回傳 0。
- N 是範圍 [1~2147483647] 的整數。
解法:
先把數字轉成字串再遍歷一次即可,這邊要注意的陷阱是容易疏忽最後一個 1 的判斷。
例如轉成二進位是 1001000 時,由於最後面並沒有結尾的 1 把三個 0 夾住,所以答案是 2 不是 3。
所以重點會在於何時將當前計算的最大值轉成合法的最大值。
- 時間複雜度 O(N)
- 空間複雜度 O(1)
PHP 程式碼:
如果您喜歡我的文章,歡迎幫我在下面按5下讚!感謝您的鼓勵和支持!
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment