很菜的写法:
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
n=len(nums)
#存1-N
num_1=[i for i in range(1,n+1)]
#预存数
num_2=[]
nums.sort()
for i in nums:
num_1[i-1]=0
for i in num_1:
if i!=0:
num_2.append(i)
return num_2
能过但是时间复杂度太高了
sort那个好像冗余了,注释掉 , hhh
优化
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
n=len(nums)
for i in nums:
#遍历数组中的每一个数
x=(i-1)%n
#让nums[i-1]+n超出该范围,mod n是因为有些数被加过
nums[x]+=n
#根据遍历nums,每个数是否超范围而(i+1)定位到该数进行返回
ret =[i+1 for i,num in enumerate(nums) if num<=n]
return ret
用到了nums列表做哈希表的思想
笑死,不如我写的勾史。。。
next one!