给你一个非空的数字数组,它表示一个非负整数,输出该整数加一后的结果。
1. 设置一个进位carry,根据它的状态,判断数值变化
public int[] plusOne(int[] digits)
{
int carry = 1; // 进位
int j = 0;
// 1. 先对数组digits的情况进行判断
if (digits == null || digits.length == 0)
{
return digits;
}
// 2. 最后一个位置的元素加一(可能会进位)
int len = digits.length;
for (int i=len-1; i>=0; i--)
{
digits[i] += carry;
carry = 0; // 进位置位
// 产生进位
if (digits[i] >= 10)
{
digits[i] = 0;
carry = 1;
}
else
{
break;
}
}
// 判断比较完后carry的状态
if (carry == 0)
{
return digits;
}
int[] newDigits = new int[digits.length+1];
System.arraycopy(digits, 0, newDigits, 1, digits.length);
newDigits[0] = 1;
return newDigits;
}