1. 程式人生 > 其它 >【力扣】268.丟失的數字--Python實現

【力扣】268.丟失的數字--Python實現

技術標籤:力扣演算法leetcodepython

【題目描述】
給定一個包含 [0, n] 中 n 個數的陣列 nums ,找出 [0, n] 這個範圍內沒有出現在陣列中的那個數。

進階:
你能否實現線性時間複雜度、僅使用額外常數空間的演算法解決此問題?

示例 1:
輸入:nums = [3,0,1]
輸出:2
解釋:n = 3,因為有 3 個數字,所以所有的數字都在範圍 [0,3] 內。2 是丟失的數字,因為它沒有出現在 nums 中。

示例 2:
輸入:nums = [0,1]
輸出:2
解釋:n = 2,因為有 2 個數字,所以所有的數字都在範圍 [0,2] 內。2 是丟失的數字,因為它沒有出現在 nums 中。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/missing-number

【解題思路】
由於陣列中所有數字都只出現一次,且有一個不在0-n的範圍內,剩餘的n-1個全是在0-n範圍內的。所以求出陣列中所有數字的和,用(1+n)*n/2 減去求得的和即時所求。用Python實現的程式碼如下:

class Solution(object):
    def missingNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        tmp_sum = 0
        total_sum = (1+len(nums)) * len(nums) / 2
        for item in nums:
            tmp_sum += item
        return total_sum - tmp_sum