【力扣】268.丟失的數字--Python實現
阿新 • • 發佈:2021-01-19
【題目描述】
給定一個包含 [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