448. 找到所有数组中消失的数字
题目描述
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
输入输出
1 2 3 4 5
| 输入:nums = [4,3,2,7,8,2,3,1] 输出:[5,6]
输入:nums = [1,1] 输出:[2]
|
基本思路
- 遍历数组 对数组中每一个值加上该数组长度
- 处理后的数组只要所有值小于长度长度即为原来消失的
- 该位置数组下标+1即为所求
java实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { List<Integer> res = new ArrayList<Integer>(); int n = nums.length; for(int num:nums){ int x = (num - 1) % n; nums[x] += n; } for(int i = 0; i < n; i++){ if(nums[i] <= n){ res.add(i+1); } } return res; } }
|