442. Find All Duplicates in an Array

来源:互联网 发布:淘宝怎么做详情页 编辑:程序博客网 时间:2024/06/04 23:30

题目描述:

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appeartwice and others appearonce.

Find all the elements that appear twice in this array.

Could you do it without extra space and in O(n) runtime?

Example:

Input:[4,3,2,7,8,2,3,1]Output:[2,3]

思路详解:

用哈希表,两边循环即可。时间复杂度为O(n)

答案详解:

class Solution {
public:
    vector<int> findDuplicates(vector<int>& nums) {
        if(nums.size()==0)
            return nums;
        vector<int> b;
        int a[1000001]={0};
        int i,min=nums[0],max=nums[0];
        for(i=0;i<nums.size();i++)
        {
            a[nums[i]]++;
            if(min>nums[i])
                min = nums[i];
            if(max<nums[i])
                max = nums[i];
        }
        for(i=min;i<=max;i++)
        {
            if(a[i]>1)
                b.push_back(i);
        }
        return b;
    }
};

原创粉丝点击