题目看不出遇 9 需要进位,也就是 [9] 要变成 [1,0]
主要分三种情况:
- 末位不为 9 时,直接加 1 返回
- 末位为 9 时,需要从后向前一直找到不为 9 的数字,将其加 1,其后面数字全部置为 0
- 全部为 9 时,直接重新创建当前数组长度 + 1 的新数组,首位置为 1
可以使用数组转数字再转数组的方式,但可能会有整数溢出的情况func plusOne(digits []int) []int {
n := len(digits)
for i := n - 1; i >= 0; i-- {
if digits[i] != 9 {
digits[i]++
for j := i + 1; j < n; j++ {
digits[j] = 0
}
return digits
}
}
digits = make([]int, n+1)
digits[0] = 1
return digits
}