题目链接
题目描述
题解
题解1(Go)
作者:@仲景
func plusOne(digits []int) []int {
// 倒着遍历数组
for i := len(digits) - 1; i >= 0; i-- {
// 找到从后向前第一个不是9的位置
if digits[i] != 9 {
// 后面都是9的话,进1后面都会变成0,当前数字+1
digits[i]++
for j := i + 1; j < len(digits); j++ {
digits[j] = 0
}
// 前面再也不会产生进位,直接返回
return digits
}
}
// 如果全是9,最前面会多进1位,其余位置都是0
digits = make([]int, len(digits) + 1)
digits[0] = 1
return digits
}
题解2(Java)
作者:@仲景
class Solution {
public int[] plusOne(int[] digits) {
int len = digits.length;
for (int i = len - 1; i >= 0; i--) {
if (digits[i] != 9) {
digits[i]++;
for (int j = i + 1; j < len; j++) {
digits[j] = 0;
}
return digits;
}
}
digits = new int[len + 1];
digits[0] = 1;
return digits;
}
}