给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
/*
这道题关键就是当数组中的所有元素都为9
时的进位问题
*/
class Solution {
public int[] plusOne(int[] digits) {
int last=digits.length-1;//取得数组最后一个元素的索引
/*从数组最后一个元素开始向前遍历,如果是9就变为0,然后先前移动一位继续判断;
如果不是9就加上1直接返回原数组*/
while(digits[last]==9){
digits[last]=0;
last--;
if(last<0){//当数组中所有元素都遍历完后,可判断出数组中元素全为9,需要将数组扩充一位并进位
int[] result = new int[digits.length+1];
result[0] = 1;
return result;
}
}
digits[last]+=1;
return digits;
}
}