1. 程式人生 > >Leetcode 268.缺失數字 By Python

Leetcode 268.缺失數字 By Python

線性 進行 obj 現在 () 時間復雜度 iss elf sum

給定一個包含 0, 1, 2, ..., nn 個數的序列,找出 0 .. n 中沒有出現在序列中的那個數。

示例 1:

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

示例 2:

輸入: [9,6,4,2,3,5,7,0,1]
輸出: 8

說明:
你的算法應具有線性時間復雜度。你能否僅使用額外常數空間來實現?


思路

因為給定的序列也是從0開始,所以可以進行排序,比較索引和索引對應的值,如果兩個不等於說明就確實一個值了,還要註意一個情況是,沒出現的數字是n

代碼

class Solution(object):
    def missingNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        for i in range(len(nums)):
                if i != nums[i]:
                    return i
                if i == len(nums)-1:
                    return len(nums)

Ps.或者可以比較未缺失情況下的值和給定的序列的值的差就可以找到缺失數字

return len(nums)*(len(nums)+1)//2 - sum(nums)

Leetcode 268.缺失數字 By Python