448.找到所有数组中消失的数字
448.找到所有数组中消失的数字
给你一个含 n
个整数的数组 nums
,其中 nums[i]
在区间 [1, n]
内。请你找出所有在 [1, n]
范围内但没有出现在 nums
中的数字,并以数组的形式返回结果。
示例 1:
1 | 输入:nums = [4,3,2,7,8,2,3,1] |
示例 2:
1 | 输入:nums = [1,1] |
和268.丢失的数字
对应,不过在268中,只会有一个数字丢失,而在此题中丢失的数字可能有很多个
Solution:
一般的思路是用哈希表记录数组nums
中的数字,然后查询缺失的数字,由于数字范围在1~n
内,我们也可以用长度为n
的数组来代替哈希表
nums
的长度恰好为n
,为什么不让nums
自身来代替哈希表呢?
方法的核心思想是利用数组自身作为哈希表来标记出现过的数字,最后遍历数组,未被标记的索引位置即对应消失的数字。下面是对这个方法的详细注释:
1 | class Solution { |