问题描述:
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数0
之外,这个整数不会以零开头。
示例 :
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
问题分析:
(1)首先判断最后一位,不满9,直接相加即可。
(2)其他情况,最后一位要进位:循环、倒着计算,即可。
Python3实现:
class Solution:
def plusOne(self, digits):
if digits[-1] != 9: # 首先判断最后一个值,不满9,直接相加即可
digits[-1] += 1
else:
i = -1 # 倒着,处理,依次相加1,并处进位的情况
while digits[i] == 9: # 依次进位的情况
digits[i] = 0
if (-i) < len(digits):
if digits[i - 1] != 9:
digits[i - 1] += 1
else:
i -= 1
else:
digits.insert(0, 1) # 进到最前位置,即,在首位插入一个数字 1
return digits
if __name__ == '__main__':
solu = Solution()
digits = [1, 2, 3]
print(solu.plusOne(digits))
声明: 总结学习,有问题或不妥之处,可以批评指正哦。