找到所有数组中消失的数字
https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/ (opens new window) 需要注意的点
- %n操作,是因为在原数组的基础上加上n,那么在计算该索引的时候就需要%n得到原来的数
- set,setA - setB
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
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
len_arr = len(nums) +1
setA = set([i for i in range(1, len_arr)])
setB = set(nums)
return list(setA-setB)
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
len_arr = len(nums)
index = 0
while index < len_arr:
if nums[index] == index+1:
index += 1
else:
targetIndex = nums[index] -1
if nums[targetIndex] == nums[index]:
index += 1
continue
temp = nums[targetIndex]
nums[targetIndex] =nums[index]
nums[index] = temp
l = []
for index, v in enumerate(nums):
if v != index +1:
l.append(index+1)
return l