【LeetCode每天一题】Plus One(加一)
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

更多精彩