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

     
     
     
     
    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    Bootstrap 2.2.2 的新特性
    Apache POI 3.9 发布,性能显著提升
    SQL Relay 0.48 发布,数据库中继器
    ProjectForge 4.2.0 发布,项目管理系统
    红帽企业 Linux 发布 6.4 Beta 版本
    红薯 快速的 MySQL 本地和远程密码破解
    MariaDB 宣布成立基金会
    Percona XtraBackup 2.0.4 发布
    Rocks 6.1 发布,光盘机群解决方案
    精通Servlet研究,HttpServlet的实现追究
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11643891.html
Copyright © 2011-2022 走看看