-
Notifications
You must be signed in to change notification settings - Fork 0
/
question_04.cpp
60 lines (45 loc) · 1.33 KB
/
question_04.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
==> Find duplicates in an array <==
Question Link:- https://practice.geeksforgeeks.org/problems/find-duplicates-in-an-array/1?page=1&difficulty[]=0&category[]=Arrays&sortBy=submissions
Given an array a[] of size N which contains elements from 0 to N-1, you need
to find all the elements occurring more than once in the given array.
Example 1:
Input:
N = 4
a[] = {0,3,1,2}
Output: -1
Explanation: N=4 and all elements from 0
to (N-1 = 3) are present in the given
array. Therefore output is -1.
Example 2:
Input:
N = 5
a[] = {2,3,1,2,3}
Output: 2 3
Explanation: 2 and 3 occur more than once
in the given array.
*/
#include <iostream>
#include <vector>
#include <set>
using namespace std;
void printVector( vector<int> v ) {
for ( int i = 0; i < v.size(); i++ ) cout << v[i] << " ";
}
vector<int> duplicates(int arr[], int n) {
vector<int> boolarr(100000, 0), ans;
set<int> s;
for ( int i = 0; i < n; i++ ) {
if ( boolarr[arr[i]] == 1 ) s.insert(arr[i]);
else boolarr[arr[i]] = 1;
}
for ( auto iter = s.begin(); iter != s.end(); iter++ ) ans.push_back(*iter);
if (ans.size() >= 1 ) return ans;
return {-1};
}
int main () {
int a[] = {2,3,1,2,3};
vector<int> ans = duplicates(a, 5);
printVector(ans);
return 0;
}