题目给你一个含n个整数的数组nums其中nums[i]在区间[1, n]内。请你找出所有在[1, n]范围内但没有出现在nums中的数字并以数组的形式返回结果。对于题目的理解容易错的地方是nums数组里面是有n个数的n个数是存在重复的几个我们是要找到其中存在的那些数。采取的方法我是从数组的索引来开始数组的索引是从0到n-1的所以与从1到n来会差1的通过给数组的值取绝对值避免索引为负的情况再减以就是与索引开始一一对应的。然后我把所有nums[index]0的情况下标记为负因为数组中有的数字是会重复的所以可以通过这个来找到未出现的数字后面还有第二个循环其是要找到nums[i]0的就是消失的那个数字返回i1。代码class Solution {public ListInteger findDisappearedNumbers(int[] nums) {// 第一遍标记出现过的数字索引 数字-1for (int i 0; i nums.length; i) {int index Math.abs(nums[i]) - 1; // 取绝对值避免重复标记影响 减1是为了回到数组索引if (nums[index] 0) {nums[index] -nums[index]; // 标记为负}}// 第二遍收集未被标记的位置即消失的数字ListInteger result new ArrayList();for (int i 0; i nums.length; i) {if (nums[i] 0) {result.add(i 1);}}return result;}}