66. Plus One

模拟人工加法的过程。

从低位到高位,依次计算出每一位数字,过程中需要记录进位。
如果最高位进位是1,则需要将整个数组后移一位,并在第0个位置写上1。

void plusone(vector &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);
        
}

你可能感兴趣的:(66. Plus One)