力扣链接: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}