给你一个含 n
个整数的数组 nums
,其中 nums[i]
在区间 [1, n]
内。请你找出所有在 [1, n]
范围内但没有出现在 nums
中的数字,并以数组的形式返回结果。
示例 1:
输入:nums = [4,3,2,7,8,2,3,1] 输出:[5,6]
示例 2:
输入:nums = [1,1] 输出:[2]
提示:
n == nums.length
1 <= n <= 105
1 <= nums[i] <= n
class Solution {
public:
/*//const int用于增强代码的安全性和可持续性,防止意外的修改,明确变量、参数和函数的性质const int mod = 998244353;*/ //可写可不写vector<int> findDisappearedNumbers(vector<int>& nums) {int n = nums.size();for (auto& num : nums) {//将数组元素值映射到一个有效的索引范围内int x = (num - 1) % n;//判断索引元素的值是否被标记过if (nums[x] <= n) {//为被标记过nums[x] += n;}}vector<int> ret;for (int i = 0; i < n; i++) {//判断索引对应的数字是否在原始数组中出现if (nums[i] <= n) {//没有出现过//push_back像容器末尾添加元素ret.push_back(i + 1);}}return ret;}
};