leetcode 算法题(加一)
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
上代码
public int[] plusOne(int[] digits) {
//判断输入一位数时候,刚好是9
if (digits.length == 1) {
digits[0]++;
if (digits[0] == 10) {
digits = new int[]{1, 0};
}
return digits;
}
//声明一个数组装最终值
int[] dig = new int[digits.length + 1];
for (int i = digits.length - 1; i >= 0; i--) {
int index = digits[i];
index++;
if (index == 10) {
digits[i] = 0;
if (digits[0] == 0) {
for (int j = 0; j < digits.length + 1; j++) {
if (j == 0) {
dig[j] = 1;
} else {
dig[j] = 0;
}
}
return dig;
}
} else {
digits[i]++;
return digits;
}
}
return digits;
}