原文题目
给你一个含 n 个整数的数组 nums ,其中nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
解题思路
Python集合能将重复元素排除,我们用nums长度的集合与被排除重复元素后的集合相减即可得到缺少的元素。
代码
class Solution(object):
def findDisappearedNumbers(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
def lennums(nums):
n = len(nums)
return n
def setnums(n):
setnums = set(range(1,n + 1))
return setnums
def intersection(setnums,nums):
listnums = list(setnums - nums)
return listnums
n = lennums(nums)
setnums = setnums(n)
nums = set(nums)
return intersection(setnums,nums)
总结
这题考察基础及数据结构
使用集合解题速度能超越95%的人
但是缺点很明显,内存占用率大
使用哈希表能解决这个问题

268

被折叠的 条评论
为什么被折叠?



