1.非常直接 :
末尾加一,在循环中遍历当前元素是否为10,是的话重新赋为0,并且前一个元素值+1(注意判断存在前一个元素);
当第一个元素为10时,下标为1~digits.length-1的元素后移一个位置。
class Solution {
public int[] plusOne(int[] digits) {
digits[digits.length-1]+=1;
for(int i=digits.length-1;i>=0;i--){//遍历所有元素
if(digits[i]==10){
digits[i]=0;
if(i>0) //当不是第一个元素时,前一个进1
digits[i-1]+=1;
else{ //是第一个元素且等于10,需要所有元素后移
digits= new int[digits.length + 1];
for(int j=digits.length-1;j>1;j--){
digits[j]=digits[j-1];
}
digits[1]=0;
digits[0]=1;
}
}
}
return digits;
}
}
- 参考某答,通过%10!=0来中止进位,对于所有元素均进位999—>1000
class Solution {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--) {
digits[i]++;
digits[i] = digits[i] % 10;
if (digits[i] != 0)
return digits; //进位0~digits.length-1次后中止直接返回
}
digits = new int[digits.length + 1];//999999
digits[0] = 1;
return digits;
}
}
虽然比较简单,但还是要写篇博客缓解下强迫症啊~~~