找到所有数组中消失的数字
1.题目描述
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
示例1
输入:nums = [4,3,2,7,8,2,3,1]
输出:[5,6]
2.思路
先使用Set对数组进行一个去重过滤,添加到Set中
然后使用Set添加1-n之间的数,如果添加成功,则说明该数在之前的数组中不存在
3.代码
class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
int count = nums.length;
List<Integer> arr = new ArrayList();
Set<Integer> set = new HashSet();
// 先去重
// 然后通过set添加,如果添加成功,说明当前值在数组中不存在
for(int x:nums){
set.add(x);
}
for(int i = 1; i <= count ; i++){
if(set.add(i)){
arr.add(i);
}
}
return arr;
}
}