携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
本题考察数列相关知识,为简单题66.加一
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
代码
从后向前
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
for i in range(len(digits)-1, -1, -1):
digits[i] += 1
if digits[i] < 10:
return digits
else:
digits[i] = 0
return [1] + digits #[9,9,9]情况
解析
就是输入一个按照数组形式表示的数字,这个数字加上1之后,再按照数组的形式输出。其实很简单,唯一的难点在于要考虑进位问题,当这个数组最后一位是9的时候处理起来会比较有难度,也只是比较有难度而已。
具体过程:
1.for循环从最后一位开始遍历
2.最后一位加上1之后,如果小于10,不用考虑进位问题,直接输出数组即为所得;如果等于10,则这1位变成0,继续for循环,直到出现小于10的位数;如果直到结束for循环仍然需要进位,则输出[1] + digits(现有数组)
3.这样输出的数组就是满足要求的了!
来源:力扣(LeetCode)
链接:leetcode.cn/problems/pl…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。