Find All Duplicates in an Array

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of the array), some elements appear twice and others appear once.
Find all the elements that appear twice in this array.

Example:

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

Output:
[2,3]

Approach

Java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class FindAllDuplicates {
    public static void main(String[] args) {
        int[] arr = { 43278231 };
        List<Integerres = findDuplicates(arr);
        System.out.println(Arrays.asList(res));
    }

    static List<IntegerfindDuplicates(int[] nums) {
        List<Integerv = new ArrayList<Integer>();
        HashSet<Integerst = new HashSet<Integer>();
        for (int i = 0; i < nums.length; i++) {
            if (st.contains(nums[i]))
                v.add(nums[i]);
            st.add(nums[i]);
        }
        return v;
    }

}

C++

#include <bits/stdc++.h>
using namespace std;

vector<intfindDuplicates(vector<int&nums)
{
    vector<intv;
    set<intst;
    for (int i = 0i < nums.size(); i++)
    {
        int x = st.size();
        st.insert(nums[i]);
        if (x == st.size())
            v.push_back(nums[i]);
    }
    return v;
}

int main()
{
    vector<intarr = {43278231};
    vector<intres = findDuplicates(arr);
    cout << "[";
    for (int i = 0i < res.size() - 1i++)
        cout << res[i] << ",";
    cout << res[res.size() - 1] << "]";
    return 0;
}


No comments:

Post a Comment