知识点
大整数加法
思路
本质是给你一个用数组存的大整数,求+1是多少。我们可以模拟小学数学的加法的过程,从末尾开始+1,逐渐进位到最前面一位。
实现上由于数组在前面添加一位需要复制数组,所以我们翻转数组来实现,首先添加一个0用于进位。最后消除掉后置的零后翻转回来即可。
时间复杂度 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; } };