[LeetCode]442. Find All Duplicates in an Array
题目描述
思路
出现数字的范围和数组长度一致,并且只重复出现两次,可以用位置标记,当这个位置被访问一次的时候,将位子上的数字置负,再次访问的时候,就将该表示该位置的数存入结果数组。
代码
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
vector<int> res;
for (int i = 0; i < nums.size(); ++i){
int flag = abs(nums[i]) - 1;
if (nums[flag] > 0){
nums[flag] = -nums[flag];
}
else {
res.push_back(flag + 1);
}
}
return res;
}
};
本文介绍了解决LeetCode上编号为442的问题——寻找数组中所有重复的数字的方法。通过巧妙地利用数组索引作为标志,实现了一种高效的空间复杂度O(1)、时间复杂度O(n)的解决方案。
370

被折叠的 条评论
为什么被折叠?



