66. 加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]
输出:[1]
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
解题思路
这题出现在某个小厂的笔试中,没想到博主栽倒了 🤣👉🤡(博主真是个小丑啊)
(不过好在另一道算法题做出来了)
博主算法是真菜哈哈 🤣
有一说一,初看这道题目,没太读懂题目要表达的意思。下来看了半天,才明白就是数字加一的问题,但加一需要考虑到数字 9,因为 9+1=10,需要考虑到进位的问题了。于是乎,可以抽象为将数字的每个位拆分到数组中的下标中,如果数组中的最后一个元素为 9,则变为 0,然后向前进一位。但这进位如何表示出来?答案是用循环。普通数字的个位为 9,且进行加一时,这个进位的过程是否可以理解为数组的倒序遍历?而且这道题的关键是不是数字 9?依据这个思路,该题就可以解了。