PLUS ONE 加一

2016-01-15  本文已影响66人  adonisjph

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。

该数字按照大小进行排列,最大的数在列表的最前面。

样例
给定 [1,2,3]
表示 123, 返回 [1,2,4]
.
给定 [9,9,9]
表示 999, 返回 [1,0,0,0]

思路:对于数组构成的数进行加1,应当是从数组的末尾也就是数的个位开始加1。所以数组的遍历应当从数组的末位元素进行。
有两点需要注意,一个是进位的处理,还有一个是当数组元素都为9时,应当扩大数组长度以容纳新数组。

代码:
class Solution:
    # @param digits, a list of integer digits
    # @return a list of integer digits
    def plusOne(self, digits):
        for i in range(len(digits)-1, -1, -1):  #从末位开始遍历数组
            digits[i] = (digits[i] + 1) % 10  #求元素+1后的个位数
            if digits[i]:  #如果为0,则说明产生了进位,break后将进位的1加到前一个元素上
                break;
        else:
            digits.insert(0, 1)  #这里用insert方法将元素插入列表中
        return digits
上一篇 下一篇

猜你喜欢

热点阅读