leetcode-66.加一
阿新 • • 發佈:2019-01-20
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 intthisBit, 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.加一