zoukankan      html  css  js  c++  java
  • 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

     
     
     
     
    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    阿波罗11号登月全套高清照片(16650张,67.1G)分享
    oracle ORA-02292: 违反完整约束条件
    三十六副寺庙对联,领略真正的大智慧!
    SpringCloud微服务架构及其示例
    IDEA怎么关闭暂时不用的工程
    关于解决Incorrect result size: expected 1, actual的问题
    Centos7安装redis6.0.6教程
    VMware安装CentOS7超详细版
    Spring5--@Indexed注解加快启动速度
    《程序员修炼手册》
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11643891.html
Copyright © 2011-2022 走看看