448. Find All Numbers Disappeared in an Array 发表于 2022-01-25 Flip1234567891011121314151617181920class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { int abs = Math.abs(nums[i]); if (nums[abs - 1] > 0) { nums[abs - 1] *= -1; } } // 注意此处是收集索引应该存储的数值 for (int i = 0; i < nums.length; i++) { if (nums[i] > 0) { list.add(i + 1); } } return list; }} Hash123456789101112131415161718192021222324252627class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { List<Integer> numList = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { int targetIndex = nums[i] - 1; while (nums[i] != nums[targetIndex]) { swap(nums, i, targetIndex); targetIndex = nums[i] - 1; } } for (int i = 0; i < nums.length; i++) { if (nums[i] != i + 1) { numList.add(i + 1); } } return numList; } private void swap(int[] nums, int i, int j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; }} Reference448. Find All Numbers Disappeared in an Array