力扣链接: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 }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。