力扣66. 加一

示例


代码实现
class Solution {
public int[] plusOne(int[] digits) {
int n=digits.length;
for(int i=n-1;i>=0;i--){
if(digits[i]!=9){
digits[i]++;
for(int j=i+1;j<n;j++){
digits[j]=0;
}
return digits;
}
}
int[] res=new int[n+1];
res[0]=1;
return res;
}
}
总结收获
-
让我看看有多少人是想着是通过先把原数组转换为一个数,加1后在转成数组!这样是不行的,会溢出,开long long也不够!
-
事实上,最终我们只需要对数组 digits 进行一次逆序遍历,找出第一个不为 9 的元素,将其加一并将后续所有元素置零即可。如果 digits中所有的元素均为 999,我们需要返回一个新的数组即可。以上就可以涵盖了所有的情况了。
本文介绍了力扣66题目中的加一操作,指出直接将数组转换为数字并加1的方法不可行,提出了逆序遍历数组,找到第一个非9元素加1,其余元素置零的高效解决方案,解决了整数溢出问题。
261

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



