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