题目简述
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]
输出:[1]
提示
- 1 <= digits.length <= 100
- 0 <= digits[i] <= 9
题目分析
可能大部分人看到题目会觉得这道题简单的离谱,只用把数组最后一个数加一即可,但实际上题目中有隐藏的陷阱,每个元素的值在0到9之间,所以[9,9]这样的数组加一后应该是[1,0,0]而不是[9,10]。代码如下:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
for(int i=digits.size()-1; i>=0; i--)
{
digits[i]++;
if(digits[i] == 10) digits[i] = 0;
else return digits;
}
digits.insert(digits.begin(), 1);
return digits;
}
};
本文通过一道编程题介绍了如何在数组表示的非负整数上进行加一操作,需要注意的是,当最高位加九后需要进位。提供的解决方案详细展示了处理这种进位情况的方法,确保结果始终在0到9的范围内。
1251

被折叠的 条评论
为什么被折叠?



