共计 460 个字符,预计需要花费 2 分钟才能阅读完成。
力扣链接:https://leetcode-cn.com/probl…
解题思路:
这道题其实是十分奇妙的一道题,也再次感叹算法真的是十分训练思维的。在解决数组加一的过程中,咱们晓得十进制是满十进位,所以须要非凡解决的就是 9 这个数字,那么如何解决呢?有哪些状况呢?
- 状况一:数组的最初一位数字不为 9,这种状况下间接加 1 即可
- 状况二:最初一位 / 多位数字为 9,这种状况下,从后往前找到第一位不为 9 的,而后将其加一,从这位从前往后的都置为 0,第一种状况能够认为是状况二的特例,前面没有置为 0 的位数
- 状况三:全副为 9,起始地位新增一位,其余的位数全副值为零
-
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 }
正文完