关于golang:Leetcode专题数组66加一

47次阅读

共计 460 个字符,预计需要花费 2 分钟才能阅读完成。

力扣链接:https://leetcode-cn.com/probl…
解题思路:
这道题其实是十分奇妙的一道题,也再次感叹算法真的是十分训练思维的。在解决数组加一的过程中,咱们晓得十进制是满十进位,所以须要非凡解决的就是 9 这个数字,那么如何解决呢?有哪些状况呢?

  1. 状况一:数组的最初一位数字不为 9,这种状况下间接加 1 即可
  2. 状况二:最初一位 / 多位数字为 9,这种状况下,从后往前找到第一位不为 9 的,而后将其加一,从这位从前往后的都置为 0,第一种状况能够认为是状况二的特例,前面没有置为 0 的位数
  3. 状况三:全副为 9,起始地位新增一位,其余的位数全副值为零
  4. 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
         }
     }
     newDigits := make([]int, n+1)
     newDigits[0] = 1
     return newDigits
    }

正文完
 0