0448. Find All Numbers Disappeared in an Arry

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;
    }
}

致谢 #

负雪明烛