1. 程式人生 > >leetcode-66.加一

leetcode-66.加一

insert 個數 plus size == pan pre 所表 算法

leetcode-66.加一

題意

給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。

最高位數字存放在數組的首位, 數組中每個元素只存儲一個數字。

你可以假設除了整數 0 之外,這個整數不會以零開頭。

示例 1:

輸入: [1,2,3]
輸出: [1,2,4]
解釋: 輸入數組表示數字 123。

示例 2:

輸入: [4,3,2,1]
輸出: [4,3,2,2]
解釋: 輸入數組表示數字 4321。

示例 3:

輸入: [9,9,9,9]
輸出: [1,0,0,0,0]
解釋: 輸入數組表示數字 9999。

示例 4:

輸入: [9]
輸出: [1,0]
解釋: 輸入數組表示數字 9。

算法

對數組末尾元素+1,進入模式Pattern

···

如果該元素值大於10,暫存 元素值%10,元素值/10

元素值%10賦給自己,元素值/10加給前一位/1,索引值--

如果到達首位,特殊處理:取余值賦給自己,在前面插入新元素(值為1)

···

返回數組

code

 1 class Solution {
 2 public:
 3     vector<int> plusOne(vector<int>& digits) {
 4         int i = digits.size()-1;
 5         digits[i] += 1;
 6         int
thisBit, nextBit; 7 while(digits[i] >= 10) 8 { 9 thisBit = digits[i]%10; 10 nextBit = digits[i]/10; 11 if(i == 0) 12 { 13 digits[i] = thisBit; 14 digits.insert(digits.begin(), 1); 15 break
; 16 } 17 else 18 { 19 digits[i] = thisBit; 20 digits[i-1] += 1; 21 i--; 22 } 23 } 24 return digits; 25 } 26 };

leetcode-66.加一