详情

    题目看不出遇 9 需要进位,也就是 [9] 要变成 [1,0]
    主要分三种情况:

    1. 末位不为 9 时,直接加 1 返回
    2. 末位为 9 时,需要从后向前一直找到不为 9 的数字,将其加 1,其后面数字全部置为 0
    3. 全部为 9 时,直接重新创建当前数组长度 + 1 的新数组,首位置为 1
      1. func plusOne(digits []int) []int {
      2. n := len(digits)
      3. for i := n - 1; i >= 0; i-- {
      4. if digits[i] != 9 {
      5. digits[i]++
      6. for j := i + 1; j < n; j++ {
      7. digits[j] = 0
      8. }
      9. return digits
      10. }
      11. }
      12. digits = make([]int, n+1)
      13. digits[0] = 1
      14. return digits
      15. }
      可以使用数组转数字再转数组的方式,但可能会有整数溢出的情况