Given a non-empty array of digits representing a non-negative integer, plus one to the integer.The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.You may assume the integer does not contain any leading zero, except the number 0 itself.

Example 1:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

思路
 这道题在python中还是挺好解决的, 直接从列表的尾部开始进行并设置一个溢出标志量,然后执行加法操作,如果加之后的结果小于10的话,直接中断,并判断溢出标志量。否则指针减1,开始新一轮的计算。直到遍历到头部结束。时间复杂度为O(n), 空间复杂度为O(1)。
解决代码
  
 1 class Solution(object):  2     def plusOne(self, nums):  3         """
 4  :type digits: List[int]  5  :rtype: List[int]  6         """
 7         index = len(nums)-1
 8         if not nums:  9             return [] 10         flow = 0 # 溢出标志量 11         while index >= 0: # 从尾部开始向前遍历 12             tem = nums[index] + 1
13             if tem >= 10: # 如果结果大于等于10的话,设置溢出标志量 14                 flow = 1
15                 nums[index] = tem %10
16             else: # 否则直接中断 17                 nums[index] = tem %10
18                 flow = 0 19                 break
20             index -= 1
21         if flow == 1: # 最后判断溢出是否为1, 因此可能会遇到比如999这种输入。 22             nums.insert(0, 1) # 在头部插入 23         return nums            
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄