• leetcode——268.缺失数字


    class Solution:
        def missingNumber(self, nums) -> int:
            a=len(nums)
            i=a
            while i>=0:
                if i in nums:
                    i-=1
                else:
                    return i
    执行用时 :2424 ms, 在所有 Python3 提交中击败了5.05%的用户
    内存消耗 :14.9 MB, 在所有 Python3 提交中击败了5.36%的用户
     
    双指针:
    效果差不多,没多少改进:
    class Solution:
        def missingNumber(self, nums) -> int:
            a=len(nums)
            i=a
            j=0
            while j<=i:
                if i in nums and j in nums:
                    i-=1
                    j+=1
                elif i not in nums:
                    return i
                else:
                    return j
    执行用时 :2292 ms, 在所有 Python3 提交中击败了5.05%的用户
    内存消耗 :14.9 MB, 在所有 Python3 提交中击败了5.36%的用户
     
    继续改进。。。:
    class Solution:
        def missingNumber(self, nums) -> int:
            i=len(nums)
            j=0
            nums.sort()
            b=[i for i in range(len(nums)+1)]
            for t in range(i):
                if nums[t]!=b[t]:
                    return b[t]
            else:
                return b[-1]
    执行用时 :276 ms, 在所有 Python3 提交中击败了21.58%的用户
    内存消耗 :14.7 MB, 在所有 Python3 提交中击败了5.36%的用户
     
    效果仍然不够好。。。
     
    继续改进。。。。
    class Solution:
        def missingNumber(self, nums) -> int:
            i=len(nums)
            j=0
            nums.sort()
            b=[i for i in range(len(nums)+1)]
            k=0
            while k<len(nums) and b[k]==nums[k]:
                k+=1
            return b[k]
    执行用时 :208 ms, 在所有 Python3 提交中击败了48.09%的用户
    内存消耗 :14.9 MB, 在所有 Python3 提交中击败了5.36%的用户
     
    for 循环还是比较慢。
     
    上面有两句话用不到,就删了:
    class Solution:
        def missingNumber(self, nums) -> int:
            nums.sort()
            b=[i for i in range(len(nums)+1)]
            k=0
            while k<len(nums) and b[k]==nums[k]:
                k+=1
            return b[k]
    执行用时 :196 ms, 在所有 Python3 提交中击败了66.24%的用户
    内存消耗 :15 MB, 在所有 Python3 提交中击败了5.36%的用户
     
    还应该怎样改进呢?
    看了别人执行用时为40ms的例子,从数学的角度出发,好巧妙啊,我怎么就想不到。。。
    class Solution:
        def missingNumber(self, nums: List[int]) -> int:
            return int((len(nums)*(len(nums)+1)/2)-sum(nums))

    但是很奇怪的是,同样的程序,我一执行就用时不一样了,而且每次都不一样,跨度还挺大。

    执行用时 :180 ms, 在所有 Python3 提交中击败了75.23%的用户
    内存消耗 :15 MB, 在所有 Python3 提交中击败了5.36%的用户

                                                                                                            ——2019.10.9

     
     
     
     
    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    Python操作Excel
    unittest单元测试生成HTML测试报告
    pycharm安装 package报错:module 'pip' has no attribute 'main'
    Jenkins关闭、重启,Jenkins服务的启动、停止方法。
    selenium如何获取已定位元素的属性值?
    本周学习小结(23/03
    本周学习小结(16/03
    本周学习小结(09/03
    本周学习小结(02/03
    本周学习小结(24/02
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11643891.html
Copyright © 2020-2023  润新知