LeetCode 442 Find All Duplicates in an Array
思路
本题将当前元素的value作为下一个元素的index,类似的还有 287 Find the Duplicate Number 和448 Find All Numbers Disappeared in an Array。
代码
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
vector<int> rs;
int index;
for (int i = 0; i < nums.size(); ++i) {
index = abs(nums[i]) - 1;
if (nums[index] < 0) rs.push_back(index + 1);
else nums[index] = -nums[index];
}
return rs;
}
};