加一
题目:
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。
思想:
(1)从数组的最后一位开始遍历,对其加一。
(2)如果大于十进位1,继续遍历,否则结束遍历。并把当前元素赋值为加一后的元素除以10以后的余数。
(3)如果有进位,对当前正在遍历的数组元素加一,继续执行(2)。
(4)如果遍历到数组的第一个元素,并且加一大于十,则新建一个数组,其大小为原数组长度加一,默认全部赋值为零,新数组第一个元素赋值为一。
代码:
publicint[] plusOne(int[] digits){
int add = 1;
for(int i = digits.length - 1; i >= 0; i-- ){
int num = digits[i] + add;
add = num / 10;
digits[i] = num % 10;
if(i == 0 && add == 1){
digits = new int[digits.length+1];
digits[0] = 1;
}
if(add == 0)
break;
}
return digits;
}
题目在leetcode