leetcode-66.加一
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 };