没啥好说的,很简单一道题。我就过个手。。。
public class Solution {
public int[] plusOne(int[] digits) {
int len=digits.length;
int advance=0;
for(int i=len-1; i>=0; i--){
if(digits[i]!=9){ // 如果不是9,+1,结束。
digits[i]++;
return digits;
}
else digits[i]=0; // 简化后的思路:有9就变0,然后下一位接着加1,可以重复直面的循环。。
}
int[] result = new int[len+1];
result[0]=1;
return result;
}
}
今天的代码:
比上面的代码,逻辑上更加一般化,就是不同的加法思路,没有多考虑是不是9的情况,都可以。。
public class Solution {
public int[] plusOne(int[] digits) {
int carry=1;
int len=digits.length;
for(int i=len-1; i>=0; i--){
int sum=carry+digits[i];
int digit=sum%10;
carry=sum/10;
digits[i]=digit;
if(carry==0) return digits; // 这句话要放在后面,不能放在for loop里面的开头
}
int[] result= new int[len+1];
result[0]=1;
return result;
}
}