题目的意思就是用数组存储了一个数字。当这个数字加1的仍然用数组存储正确的结果。
如果最后一位小于8,则直接将最后一个数组元素加1
如果最后一位大于8.需要进行如下操作:
最后一位变成0,前面一位加1
一直循环,直到有一位是不用进位的。
如果到最后一位都需要进位,则扩大数组的一位
找了其他一些解决方案,发现基本思想都是不变的,都差不多,所以就先这样,就先到这里。
如果最后一位小于8,则直接将最后一个数组元素加1
如果最后一位大于8.需要进行如下操作:
最后一位变成0,前面一位加1
一直循环,直到有一位是不用进位的。
public int[] plusOne(int[] digits) {
if(digits[digits.length-1]<9){
digits[digits.length-1]+=1;
return digits;
}
int len=digits.length;
int index=len-1;
while(index>0){
digits[index]=0;
index--;
if(digits[index]<9){
digits[index]+=1;
return digits;
}
}
int[] result=new int[digits.length+1];
result[0]=1;
return result;
}
如果到最后一位都需要进位,则扩大数组的一位
这样看来的话,这道题其实就是用程序实现了一下竖式的加法
这是加任何一个数字需要进行的操作,但这道题是只要增加1,和加别的数有什么区别吗,想再想一想
查看大神代码
1.和我的思路基本一样,不过要简洁一些
代码如下:
public int[] plusOne(int[] digits) {
int n = digits.length;
for(int i=n-1; i>=0; i--) {
if(digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] newNumber = new int [n+1];
newNumber[0] = 1;
return newNumber;
}
找了其他一些解决方案,发现基本思想都是不变的,都差不多,所以就先这样,就先到这里。