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:
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.
LeetCode:链接
给定一个数字数组表示的非负数,对该数加1。最高位数字存储在列表的头部。 从后向前处理。如果不再有进位,则可以跳出循环。如果最高位产生了进位需要在数组的头部插入1。
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
'''进位数字'''
carry = 1
'''从后往前判断'''
for i in range(len(digits)-1, -1, -1):
'''加一求余数'''
digit = (digits[i] + carry) % 10
'''3+1是4 所以不会进位 9+1是10求余数是0 所以继续进位 只要继续进位就是1'''
carry = 0 if digit >= digits[i] else 1
'''赋值'''
digits[i] = digit
'''如果进位不存在直接就跳出了'''
if carry == 0:
break
'''如果进位仍然存在,比如数组里有9,9+1=10,应该生成的是1,0,也就是说这个进位在当前的数组里没有找到位置
所以就添一个[1]'''
if carry:
return [1] + digits
return digits