66. Plus One

作者: Chrisbupt | 来源:发表于2019-01-08 15:10 被阅读0次

    模拟人工加法的过程。

    从低位到高位,依次计算出每一位数字,过程中需要记录进位。
    如果最高位进位是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);
            
    }
    

    相关文章

      网友评论

        本文标题:66. Plus One

        本文链接:https://www.haomeiwen.com/subject/pzzvrqtx.html