0448. Find All Numbers Disappeared in an Array #
题目 #
给定一个含 n
个整数的数组 nums
,其中 nums[i]
在区间 [1, n]
内。找出所有在 [1, n]
范围内但没有出现在 nums
中的数字,并以数组的形式返回结果。
思路 #
- 原地哈希
代码 #
class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
for (int num: nums) {
if (nums[Math.abs(num) - 1] > 0) nums[Math.abs(num) - 1] *= -1;
}
List<Integer> ans = new LinkedList<>();
for (int i = 0; i < nums.length; i++) {
if (nums[i] > 0) ans.add(i + 1);
}
return ans;
}
}