数字加一 plus-one
题目描述
给出用数字数组表示的一个非负整数,请对该整数加1。
Given a non-negative number represented as an array of digits, plus one to the number.
示例
示例1
输入
[1]
输出
[2]
示例2
输入
[1,2,3]
输出
[1,2,4]
解题思路
- 实质上是大整数相加,设置进位标志carry,从低位开始遍历,每次如果出现进位,就修改当前位和进位标志carry。如果遍历完后仍有进位,就在高位补上进位。
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int one(1), carry(0); //待加整数和进位
int size = (int)digits.size();
//由于只需要加一次1,所以不用放在循环里,直接初始化时相加即可
digits[size - 1] += one;
for(int i = size - 1; i >= 0; i --) {
digits[i] += carry;
carry = digits[i] / 10;
digits[i] %= 10;
}
//如果仍有进位,就在最高位之后补上进位
if(carry) {
digits.insert(digits.begin(), carry);
}
return digits;
}
};