LeetCode-448-找到所有数组中消失的数字
思路
因为空间复杂度为1,因此只能在原数组上进行标记,这里采用负数来表示数字存在,主要方法就是遍历nums数组,标记nums[nums[i]]为负数,最后数组元素是正数的元素的下标就是消失的数字
代码
class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
for(int i=0;i<nums.length;i++){
int j=Math.abs(nums[i])-1;
if(nums[j]>0){
nums[j]=-nums[j];
}
}
List<Integer> res=new ArrayList<>();
for(int i=0;i<nums.length;i++){
if(nums[i]>0){
res.add(i+1);
}
}
return res;
}
}