- 我的思路:从数组末端开始,如果digits[i]==9 就将它置 0 如果不等于9,就加1,有可能数组里面的数字都是9,那样就要new 一个新的数组 长度比原来的数组多一就行,再将第一个元素赋值为1;
public int[] plusOne(int[] digits) {
int i=digits.length-1;
while(i>=0)
{
if(digits[i]==9)
{
digits[i]=0;
i--;
if(digits[0]==0)
{
int[] newdigits = new int[digits.length+1];
newdigits[0] = 1;
return newdigits;
}
continue;
}
else
{
digits[i]+=1;
break;
}
}
return digits;
}
- 第二种思路:模拟加法,如果加一后==10,就向前进一;
public int[] plusOne(int[] digits) {
int up=1;
for(int i=digits.length-1;i>=0;--i){
int temp=digits[i];
digits[i]=(digits[i]+up)%10;
up=(temp+up)/10;
}
if(up==1){
int[] arr=new int[digits.length+1];
arr[0]=1;
return arr;
}
else return digits;
}
end~
谢谢!