
集合秒杀
python
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
return list(set(list(range(1, len(nums)+1))) - set(nums))
哈希
哈希的思路,借用原数组:
第一,可以用哈希表记录数组中出现的数字,再逐一检查1,n中哪些数字缺失。
第二,为了将空间优化到O(1),可以利用原数组本身作为哈希表,通过给对应位置的元素加n来标记数字出现过。
第三,遍历完成后,数组中数值未超过n的位置即对应缺失的数字。
python
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
n = len(nums)
for num in nums:
x = (num - 1) % n
nums[x] += n
ret = [i + 1 for i, num in enumerate(nums) if num <= n]
return ret