本题源自LeetCode
---------------------------------------------------------
思路:
数组的最后存放的是数的最低位,加上一个1 后,判断是否有进位。
代码1:
vector<int> plusOne(vector<int> &digits) {
int len=digits.size();
int carry=1;
for(int i=len-1;i>=0;i--){
digits[i]+=carry;
carry=digits[i]/10; //判断是否有进位
digits[i] %=10;
}
if(carry>0)
digits.insert(digits.begin(),1);
return digits;
}代码2:
vector<int> plusOne(vector<int> &digits) {
int i=digits.size()-1;
while(i>=0&&digits[i]==9){ //只要低位是9 就变为0
digits[i]=0;
i--;
}
if(i>=0)
digits[i]++; //遇到不是9 的就加1 结束
else{ //否则 为全是9 的数。则进位1.
digits.push_back(0);
digits[0]=1;
}
return digits;

本文提供两种解决方案来实现LeetCode中的加一题目。思路是在数组的最后存放最低位数,加上一个1后,判断是否有进位。第一种方案通过遍历数组并使用进位变量进行操作;第二种方案优化了全9的情况。
445

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



