摘要:之后我們可以查看頭尾兩個數字是否符合要求。如果不符合我們可以直接返回結果。方法利用的特點。方法求和根據高斯定理,從到的和為。所以把數組的所有數字求和,然后與從到的和相減所得數字,就是我們需要的數字。
題目鏈接:Missing Number
思路:
方法1: 排序
我們很自然的可以想到,如果數組是排好序的,那么可以很容易的找到缺少的數字。
之后我們可以查看頭尾兩個數字是否符合要求。如果不符合我們可以直接返回結果。
最后,我們查從1到n-1個數字。
方法2: Bit Manipulation
利用“XOR”的特點。比如 1 XOR 1 = 0,但1 XOR 1 XOR 2 = 2。
所以只要把數組中的數字和數組中的index全部XOR,那么缺少的那個肯定是我們需要的數字。
方法3: HashSet
放數組的數字放到HashSet里面,然后遍歷這個HashSet。如果數字不在就說明這是我們要找的數字。
方法4: 求和
根據高斯定理,從1到n的和為 ((1+n) * n)/2。
所以把數組的所有數字求和,然后與從1到n的和相減所得數字,就是我們需要的數字。
時間復雜度:
方法1:
時間:O(nlogn) 空間:O(1) if we sort the numbers in place
方法2:
時間:O(n) 空間:O(1)
方法3:
時間:O(n) 空間:O(n)
方法4:
時間:O(n) 空間:O(1)
代碼:
方法1:
class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ nums.sort() if nums[0] != 0: return 0 if nums[-1] != len(nums): return len(nums) for i in range(1, len(nums)): exp_val = nums[i-1] + 1 if nums[i] != exp_val: return exp_val
方法2:
class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ res = len(nums) for i, num in enumerate(nums): res ^= i ^ num return res
方法3:
class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ nums = set(nums) n = len(nums) + 1 for i in range(n): if i not in nums: return i
方法4:
class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ exp_sum = len(nums) * (len(nums) + 1) // 2 sum_n = sum(nums) return exp_sum - sum_n
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41961.html
摘要:題目解答一開始我的思始很簡單,排序,查找但是可以用的方法,因為只有一個,所以可以把其它所有的數都配好對,剩下這個就是我們要找的這里很喔,因為只少了一個數,舉個例子所以當我們把這些數的時候,唯一一個剩下的就是的這個數 題目:Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the o...
摘要:題目詳情題目的意思是輸入一個長度為的數組,找到這個數字中不存在于數組中的丟失的數字思路我的想法是,用這個數的和減去數組中的每一個元素的值,最后剩下的值就是丟失的數字解法 題目詳情 Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing fr...
摘要:前言從開始寫相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫~現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。 順序整理 1~50 1...
摘要:題目描述給定一個包含中個數的序列,找出中沒有出現在序列中的那個數。示例輸入輸出示例輸入輸出最簡單的解法剛看到的這道題的時候,第一感覺就是排序,之后直接挨個比較就能找到缺失的數字。 題目描述 給定一個包含 0, 1, 2, ..., n 中 n 個數的序列,找出 0 .. n 中沒有出現在序列中的那個數。 示例 1: 輸入: [3,0,1] 輸出: 2 示例 2: 輸入: [9,6,...
摘要:在線網站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學習。 這篇文章記錄我練習的 LeetCode 題目,語言 JavaScript。 在線網站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
閱讀 3033·2021-10-13 09:39
閱讀 1880·2021-09-02 15:15
閱讀 2439·2019-08-30 15:54
閱讀 1803·2019-08-30 14:01
閱讀 2602·2019-08-29 14:13
閱讀 1411·2019-08-29 13:10
閱讀 2731·2019-08-28 18:15
閱讀 3870·2019-08-26 10:20