问题链接
题目解析
给出一个非负向量,代表一个数字,最高位在头,最低位在尾,返回其加一之后的数字向量。
解题思路
由于返回值要求是一个数字向量,那就没有必要把向量转化成真的数字来计算。一般情况下,从向量尾开始判断:
如果为9,那么进位,变为0,观察上一位;否则加1返回。在每一位上都是如此。
特殊情况:一直可以进位,直到最高位。这个时候应该退出循环,说明答案就是10^len,当然得是向量形式。
参考代码
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int len = digits.size();
for(int i = len-1; i >= 0; i--) {
if(digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
//vector<int> res(len+1, 0);
//res[0] = 1;
//return res;
digits.insert(digits.begin(), 1);
return digits;
}
};
LeetCode All in One题解汇总(持续更新中...)
本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.