LeetCode 442 Find All Duplicates in an Array

316 阅读1分钟

LeetCode 442 Find All Duplicates in an Array

思路

本题将当前元素的value作为下一个元素的index,类似的还有 287 Find the Duplicate Number448 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;
    }
};