面試題 17.04. 消失的數字

10相濡以沫 發表於 2020-10-30

方法1:

使用排序的方法進行對比.如果迴圈到這個數字,不等於排序後的數字.那麼就是缺失.但也有一種情況就是.缺失的是最後一種情況.第一次就沒考慮到這個.給整報錯了

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Time    : 2020/10/30 23:38
@Site    : 
@File    : 面試題 17.04. 消失的數字.py
@Software: PyCharm
"""
"""
陣列nums包含從0到n的所有整數,但其中缺了一個。請編寫程式碼找出那個缺失的整數。你有辦法在O(n)時間內完成嗎?

注意:本題相對書上原題稍作改動

示例 1:

輸入:[3,0,1]
輸出:2


示例 2:

輸入:[9,6,4,2,3,5,7,0,1]
輸出:8
"""
'''
考慮到都是不一樣的數.所以感覺可以使用排好序的
'''
class Solution:
    def missingNumber(self, nums: list) -> int:
        nums_sort = sorted(nums)
        for i in range(len(nums_sort)):
            if nums_sort[i] != i:
                return i
        return nums_sort[-1]+1
    
A=Solution()
print(A.missingNumber([9,6,4,2,3,5,7,0,1]))

        

方法2 .使用減法

看了下.題解.居然有直接相減的辦法

但感覺直接使用內建函式.就沒有意思了.自己實現了.但似乎效果並不好…

class Solution:
    def missingNumber(self, nums: list) -> int:
        sums = (len(nums) + 1) * len(nums) / 2
        for i in range(len(nums)):
            sums -= nums[i]
        return int(sums)

在這裡插入圖片描述