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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理