Find Duplicates In Array

Easy
0/40
Average time to solve is 15m
profile
Contributed by
81 upvotes
Asked in companies
LinkedInBNY MellonFreshworks

Problem statement

You are given an array/list 'ARR' consisting of N integers, which contains elements only in the range 0 to N - 1. Some of the elements may be repeated in 'ARR'. Your task is to find all such duplicate elements.

Note:
1. All the elements are in the range 0 to N - 1.
2. The elements may not be in sorted order.
3. You can return the duplicate elements in any order.
4. If there are no duplicates present then return an empty array.
Detailed explanation ( Input/output format, Notes, Images )
Input Format:
The first line of the input contains an integer T, denoting the number of test cases.

The first line of each test case contains the integer N, denoting the size of the array.

The second line of each test case contains N space-separated integers denoting the array elements.
Output Format:
For each test case, every line of output contains K space-separated integers denoting the duplicate elements in the array.
Note
You do not need to print anything, it has already been taken care of. Just implement the given function.
Constraints:
1 <= T <=  10^2
1 <= N <= 10^4
0 <= ARR[i] <= N - 1
Time Limit: 1 sec
Sample Input 1:
2
5
0 2 1 2 3 
7
3 2 1 3 2 1 5
Sample Output 1:
2
1 2 3
Explanation For Sample Input 1:
For the first test case, since 2 is the only duplicate element, so we return it.

For the second test case, since 1, 2, 3 are duplicates so we return them. Note that 2, 3, 1 and 3, 2, 1 are also acceptable.
Sample Input 2:
1
3
0 1 2
Sample Output 2:
-1
Explanation For Sample Input 2:
For the first test case, since there are no duplicates we return -1.
Hint

Think of sorting the array.

Approaches (2)
Sorting
  1. The most trivial approach would be to sort the array/list ‘ARR’ and then return the duplicates.
  2. After sorting the array in non-decreasing order, do the following for all the elements from i = 0 to i = n - 2:
    • If ARR[i] == ARR[i + 1], then add ARR[i] to the the output list.
    • While ARR[i] == ARR[i + 1], do i = i + 1, since we don’t want to add the same duplicate elements again and again.
    • Else continue.
  3. After this loop, we will have all the duplicate elements from the array ‘ARR’ in our output array/list.
Time Complexity

O(NlogN), where N is the number of elements in the array.
 


Since we are sorting the given array/list ‘ARR’ and then traversing it once, hence the overall time complexity is O(NlogN).

Space Complexity

O(1), as we are using constant extra memory.

Code Solution
(100% EXP penalty)
Find Duplicates In Array
Full screen
Console