给你一个含 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
cpp
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;
}
};