知识点

大整数加法

思路

本质是给你一个用数组存的大整数,求+1是多少。我们可以模拟小学数学的加法的过程,从末尾开始+1,逐渐进位到最前面一位。

实现上由于数组在前面添加一位需要复制数组,所以我们翻转数组来实现,首先添加一个0用于进位。最后消除掉后置的零后翻转回来即可。

时间复杂度 O(n) n为大数的位数。

AC Code(C++)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param milk int整型vector 
     * @return int整型vector
     */
    vector<int> tomorrowMilk(vector<int>& milk) {
        reverse(milk.begin(), milk.end());
        milk[0] += 1;
        int c = 0;
        milk.push_back(0);
        for (auto& x : milk) {
            int t = x + c;
            x = t % 10, c = t / 10;
        }
        while (milk.size() and milk.back() == 0) milk.pop_back();
        reverse(milk.begin(), milk.end());
        return milk;
    }
};