给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。
示例3:
输入:[9]
输出:[1,0]
解法1:
pubiic int[] plusOne(int[] digits)
{
int len = digits.length;
for(int i = len - 1; i >=0; i--)
{
if(digits[i] < 9)
{
++digits[i]; //当数组的元素不全为9时,遍历到不为9的那一个元素,就加1后输出
return digits;
}
digits[i] = 0;//如果数组的元素全部为9,则将整个数组的元素赋值为0
}
int[] res = new int[len+1];
res[0] = 1;//整个数组元素除第一个外全为0,第一个元素加1
return res;
}
解法2:
public int[] plusOne(int[] digits)
{
int len = digits.length;
int[] res = ne int[len + 1];
int sum = 1;
for(int i = len-1; i>=0; i--)
{
sum+=digits[i];//将sum和末尾元素相加
res[i+1] = sum % 10;//将sum求余10,如果sum等于10,则此时res[i+1] = 0;否则res[i+1]=digits[i]+1;
sum = sum / 10;
}
if(sum == 0)
res[0] = 1;
return res;
else
{
return Arrays.copyOfRange(res,1,res.length);//将res数据进行复制,即去除首元素
}
}