题目描述
每个数大小1~n的长度比n小的列表有些数,问[1, n]数组哪些没出现在前面这个列表里。
样例
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
# 负号表示存在这个数
for i in range(len(nums)):
nums[abs(nums[i]) - 1] = - abs(nums[abs(nums[i])-1])
#idx = abs(nums[i]) - 1
#nums[idx] = - abs(nums[idx])
#nums[nums[i]]由1...n的数的性质,数值可以转化为位置下标信息,而进一步操作这个列表(数组)
res = []
for i in range(len(nums)):
if nums[i] > 0:
res.append(i+1)
return res
这里下标信息用abs(nums[i])
是因为之前(第二次遍历起)那几项都被赋成负值了,为了保持数值信息对应数组里的1…n位置(只有缺失的数没有对应)所以把它取正。