LeetCode Easy: 66. Plus One

一、题目

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.

给定一个字符串数组,加一之后返回字符串数组。如:[1,2,1]  => [1,2,2]    [9, 9] => [1,0,0]

二、解题思路

在整型数组的末元素进行加 1 操作,分两种情况:

1、无进位:直接加 1,然后返回

2、有进位,当前位置 0 ,前一位执行加 1操作

这里循环需要考虑的一点是,当遍历到第 0 位时,若有进位,最高位置 0,然后还有在前面增加一个 1,这里使用的是python中的 extend()方法,其和append()方法是有区别的。

list.append(object) 向列表中添加一个对象object
list.extend(sequence) 把一个序列seq的内容添加到列表中

详细见博客:https://www.cnblogs.com/subic/p/6553187.html

#coding:utf-8
import time
def plusOne1(digits):
    """
    :type digits: List[int]
    :rtype: List[int]
    """
    digits[-1] = digits[-1]+1
    i = len(digits)-1
    while i>=0:
        if digits[i]==10:
            if i == 0:
                digits[i] = 0
                D = [1]
                D.extend(digits)
                print(D)
                return D
            else:
                digits[i] = 0
                digits[i-1] = digits[i-1] + 1
            i -= 1
    print(digits)
    return digits

def plusOne2(digits):
    length = len(digits)
    i = length - 1
    while (i >= 0):
        if i == 0:
            if (digits[i] + 1) > 9:
                digits[i] = 0
                result = [1]
                result.extend(digits)
                print(result)
                return result
        if (digits[i] + 1) <= 9:
            digits[i] += 1
            print(digits)
            return digits
        else:
            digits[i] = 0
            i -= 1
    print(digits)
    return digits

if __name__ == '__main__':
    s = [9,9]
    starttime = time.clock()
    plusOne1(s)
    #plusOne2(s)
    endtime = time.clock()
    print((endtime-starttime)*100000)

最后提交的时候,我的代码(plusOne1)又超时间了,贴上了别人的代码(博客:https://blog.csdn.net/xiaolewennofollow/article/details/45226409),但是感觉并没有感觉哪里有区别,还请指教。

既然无论如何时间都会过去,为什么不选择做些有意义的事情呢
原文地址:https://www.cnblogs.com/xiaodongsuibi/p/8661636.html