题解(普通):
- 初始化一个长度为n+1的布尔数组,将所有元素设为False。
- 遍历nums数组,将对应下标的布尔值设为True。
- 遍历布尔数组,将值为False的下标添加到结果数组中。
- 返回结果数组。
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
n = len(nums)
bool_arr = [False] * (n + 1)
for num in nums:
bool_arr[num] = True
result = []
for i in range(1, n + 1):
if not bool_arr[i]:
result.append(i)
return result
进阶:
- 遍历数组nums,将对应下标的元素变为负数。
- 再次遍历数组nums,如果下标+1对应的元素为正数,说明该下标+1没有出现在nums中,将其添加到结果数组中。
- 返回结果数组。
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
for num in nums:
index = abs(num) - 1
nums[index] = -abs(nums[index])
res = []
for i, num in enumerate(nums):
if num > 0:
res.append(i + 1)
return res