模拟人工加法的过程。
从低位到高位,依次计算出每一位数字,过程中需要记录进位。
如果最高位进位是1,则需要将整个数组后移一位,并在第0个位置写上1。
void plusone(vector<int> &digits)
{
int n = digits.size();
for (int i = n - 1; i >= 0; --i)
{
if (digits[i] == 9) #如果该位是9则加一后为0,此时需要进位,所以不退出,在i-1位置上再加一。
{
digits[i] = 0;
}
else
{
digits[i]++; #此时该位不是9,加一后直接退出即可,不需要考虑后续最高位后移的情况。
return;
}
}
digits[0] =1; # 到此处则表明该数的各个位置都是9999...,则在最高位需要进位
digits.push_back(0);
}
网友评论