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

 

 

 

 

 
 
 
 
posted @ 2019-10-09 19:37  欣姐姐  阅读(168)  评论(0编辑  收藏  举报