code:用负来标记出现过的,因为题目要求不能有extra space,复杂度为O(n),所以只能操作原数组,另外可以利用的是数组的下标。
public class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
for(int i=0;i<nums.length;i++){
nums[Math.abs(nums[i])-1]=-Math.abs(nums[Math.abs(nums[i])-1]);
}
List<Integer> res=new ArrayList<Integer>();
for(int i=0;i<nums.length;i++){
if(nums[i]>0){
res.add(i+1);
}
}
return res;
}
}