给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
题解思路
将最后一个元素加1,如果大于九记录十位的数字加到下一个数组元素上。如果数组元素个数不够,需要在头部insert。
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int dlen = digits.size();
int flag = 0;
int m, tmp;
for(int i = dlen - 1; i >= 0; i--)
{
i == dlen - 1 ? m = 1 : m = 0;
tmp = digits[i] + m + flag;
if(tmp > 9)
{
flag = 1;
digits[i] = tmp % 10;
if(i == 0)
digits.insert(digits.begin(), flag);
}
else
{
flag = 0;
digits[i] = tmp;
break;
}
}
return digits;
}
};
执行用时 : 8 ms, 在Plus One的C++提交中击败了96.80% 的用户
内存消耗 : 8.5 MB, 在Plus One的C++提交中击败了56.83% 的用户