Plus-One——python

“”“””
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.
You may assume the integer do not contain any leading zero, except the number 0 itself.
The digits are stored such that the most significant digit is at the head of the list.
“””
思路:就好像123+1=124一样,只是放到数组里面处理。而且有进位问题,故可以设置一个flag标志。
有进位的时候置为1,没有进位为0。 而且输入数组要反转(reversed),方便从最低位开始处理,一步步累加到上一个高位。
最后要保证,最高位如果产生的进位则需要数组连接,return [1]+digits 最常用的连接。

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        flag = 1
        for i in reversed(range(0, len(digits))):#从最后一位开始计算,保证进位可以到达高位
            figure = (flag + digits[i]) % 10
            flag = 1 if figure < digits[i] else 0
            digits[i] = figure
        if flag == 1:#有进位且为最高位,故最高位字符串连接+1
            return [1]+digits
        return digits

“””
reversed 函数返回一个反转的迭代器。
reversed(0,3))->2 1 0
设置标志进位器,简写为如下
flag = 1 if figure < digits[i] else 0
flag=1可以累加到前一位,进1位。
“”“

猜你喜欢

转载自blog.csdn.net/Everywhere_wwx/article/details/80228945