给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例一
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例二
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
解题思路:列竖式计算
注意事项:①是否有进位存在
②是否存在数组溢出
代码详解
public static int[] plusOne(int[] digits) {
int length=digits.length;
int[] output= new int[length+1];
int t=0; int k=0;
for(int i=length-1;i>=0;i--)
{
if(i==length-1)
k=digits[i]+1+t;
else k=digits[i]+t;
System.out.println("k:"+k);
System.out.println("t:"+t);
if(k>=10)
{
t=k/10;//进位数字
if(i>0)
digits[i]=k%10;//进位后数字
else {
digits[i]=k%10;
int a=0;
for(int j=1;j<length+1;j++,a++)
{
output[j]=digits[a];
}
output[0]=k/10;
return output;
}
System.out.println("k>10"+digits[i]);
}
else {
t=0;
digits[i]=k;//不进位情况
System.out.println("k<10"+digits[i]);
}
}
return digits;
}