publicclassSolution {
public List<Integer>findDuplicates(int[] nums) {
Arrays.sort(nums); // Sorting the array List<Integer> duplicates =new ArrayList<>();
for (int i = 1; i < nums.length; i++) {
if (nums[i]== nums[i - 1]&&!duplicates.contains(nums[i])) {
duplicates.add(nums[i]);
}
}
return duplicates;
}
}
1
2
3
4
5
6
7
8
classSolution:
deffindDuplicates(self, nums):
nums.sort() # Sorting the array duplicates = []
for i in range(1, len(nums)):
if nums[i] == nums[i -1] and nums[i] notin duplicates:
duplicates.append(nums[i])
return duplicates
Store the count of each element of array in a hash table and later check in Hash table if any element has count more than 1. ( Similar approach is used in problem – First Unique Character in a String)
Time Complexity : O(n) and Space Complexity: O(n).
publicclassSolution {
public List<Integer>findDuplicates(int[] nums) {
List<Integer> duplicates =new ArrayList<>();
Set<Integer> seen =new HashSet<>();
for (int num : nums) {
if (seen.contains(num)) {
duplicates.add(num);
} else {
seen.add(num);
}
}
return duplicates;
}
}
1
2
3
4
5
6
7
8
9
10
classSolution:
deffindDuplicates(self, nums):
duplicates = []
seen = set()
for num in nums:
if num in seen:
duplicates.append(num)
else:
seen.add(num)
return duplicates