zoukankan      html  css  js  c++  java
  • 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),但是感觉并没有感觉哪里有区别,还请指教。

    既然无论如何时间都会过去,为什么不选择做些有意义的事情呢
  • 相关阅读:
    测试框架 MSTest V2与单元测试
    string字符串格式
    重构概述
    代码的坏味道
    this.Dispatcher.Invoke与SynchronizationContext
    C# new关键字
    Servlet的API和生命周期
    Servlet快速入门
    Spring介绍
    Oracle数据安全解决方案(1)——透明数据加密TDE
  • 原文地址:https://www.cnblogs.com/xiaodongsuibi/p/8661636.html
Copyright © 2011-2022 走看看