#66 Plus One
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Want to learn more? ➜ HackMD Tutorials
#66 Plus One 題目連結
一、理解題目
- 輸入:一個正整數組成,且從大到小排序好的陣列
- 第一個數字不會是 0
- 輸出:最後一個數字加 1
二、Edge Case
是否有極限值或特殊情況
- 本身是 0 的情況
[0]
- 進位後,會需要增加陣列長度 (
[9,9,9] -> [1,0,0,0]
)
三、題目思考
使用哪種資料結構:Array
(1) 使用迴圈遍歷 digits
- 先將 digits[digits.length-1] 加 1
- 設定 i=digits.length-1,也就是從個位數開始,逐個檢查。
- 如果 i<0,結束
- 檢查 digits[i] 是否需要進位
- i = i-1
- 回到步驟 3
(2) 檢查 digits[i] 是否需要進位
- 如果 digits[i]+1 小於 9,return digits
- 如果 digits[i]+1 > 9
- 判斷 i = 0,digits[i] 設為 0,並在陣列前端新增一元素,值為 1,最後回傳 digits
- i != 0,digits[i] 設為 0,digits[i-1] 加一
邏輯:
程式碼實作:
四、優化改善
內容
五、學到什麼
- 陣列方法:unshift(),在陣列前端新增一個值
- 將大問題分成兩個部分:遍歷 + 檢查是否需要進位