思路
使用标志位
遍历数组,将对应下标上的元素更改为负数来表示已经出现过。
public List<Integer> findDisappearedNumbers(int[] nums) {List<Integer> res = new ArrayList<>();for(int i=0;i<nums.length;i++){//计算对应的下标int val = Math.abs(nums[i])-1;//对应位置上更改为负数if(nums[val]>0)nums[val]=-nums[val];}for(int i=0;i<nums.length;i++)if(nums[i]>0)res.add(i+1);return res;}
