Description
Given a non-empty array of digits representing a non-negative integer, plus one to the integer.
The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
1 2 3
| Input: [1,2,3] Output: [1,2,4] Explanation: The array represents the integer 123.
|
1 2 3
| Input: [4,3,2,1] Output: [4,3,2,2] Explanation: The array represents the integer 4321.
|
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| func plusOne(digits []int) []int { digits[len(digits)-1]++
for i := len(digits) - 1; i > 0; i-- { if digits[i] < 10 { return digits }
digits[i] = 0 digits[i-1]++ }
if digits[0] == 10 { digits = make([]int, len(digits)+1) digits[0] = 1 }
return digits }
|
Note
假設有以下參數:
說明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 將最後一個元素 + 1,digits 變成 [9, 9, 10]。
第 1 次迴圈:
將 digits 的第 3 個元素設置為 0,digits 變成 [9, 9, 0]。
處理進位後,digits 變成 [9, 10, 0]。
第 2 次迴圈:
將 digits 的第 2 個元素設置為 0,digits 變成 [9, 0, 0]。
處理進位後,digits 變成 [10, 0, 0]。
由於 digits 的第 1 個元素為 10,因此處理第 1 個元素的進位,將 digits 設置為 [1, 0, 0, 0]。
最終返回:[1, 0, 0, 0]
|
Code