题目:
Given a number represented as an array of digits, plus one to the number.
题意:
翻译过来的题意比较难理解,我意译下,就是给一个数组[1,2,3,4],然后在这数组上加1 就变成了[1,2,3,5] 。这里9 到10是需要向前进位的,如[1,2,3,9] 变为[1,2,4,0] 。大概是这个意思
解题思路:
我们可以倒序遍历,先判断当前位数的数字是否小于 9 ,是的话直接+1,此时就不需要再进行下一位的处理了,直接返回当前数组就行
如果当前数字是9,那么需要将当前数字置0,同时向上进位
前面两种是只有部分为9的情况,那么当数字全部为9的情况,就需要新建一个数组,让他的长度是digits的长度+1,然后给首位赋值为1
下面给出代码:
public static int[] plusOne(int[] digits) {
if(digits == null || digits.length == 0) {
return digits;
}
for(int i = digits.length-1;i >= 0;i--) {
if(digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] res = new int[digits.length+1];
res[0] = 1;
return res;
}