在根据数字x将其对应数组中下标相应值nums[x - 1]加上n时,此时x可能已经加上了n作为哈希表存储数字,所以需要将x - 1对n进行取模后再进行存储(因为数字可能重复出现,x可能为nums[i] + n * i,所以不能相减而是取模)
代码
classSolution{publicList<Integer>findDisappearedNumbers(int[] nums){List<Integer> res =newArrayList<>();int n = nums.length;for(int i =0; i < n; i++){int x =(nums[i]-1)% n;
nums[x]+= n;}for(int i =0; i < n; i++){if(nums[i]<= n){
res.add(i +1);}}return res;}}