下标循环怼
- 做到数组中i位置躺着的数是 i + 1






此时1位置已经躺着个2了,停, i++。。。直到4位置。
此刻7位置已经躺着个8了,停,i++。。。直到6位置



所以此时就可以看出缺少了5和7
public List<Integer> findDisappearedNumbers(int[] nums) {List<Integer> ans = new ArrayList<>();int i = 0;while (i < nums.length) {int next = nums[i] - 1;if (nums[next] != next + 1) {int tmp = nums[i];nums[i] = nums[next];nums[next] = tmp;} else {i++;}}for (int j = 0; j < nums.length; j++) {if (nums[j] != j + 1) {ans.add(j + 1);}}return ans;}
