442. Find All Duplicates in an Array
Given an integer array nums
of length n
where all the integers of nums
are in the range [1, n]
and each integer appears once or twice, return an array of all the integers that appears twice**.
You must write an algorithm that runs in O(n)
time and uses only constant extra space.
Example 1:
Example 2:
Example 3:
Constraints:
n == nums.length
1 <= n <= 105
1 <= nums[i] <= n
- Each element in
nums
appears once or twice.
Solution:
class Solution {
public List<Integer> findDuplicates(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
List<Integer> result = new ArrayList<Integer>();
for (int i = 0; i < nums.length; i++){
if (set.contains(nums[i])){
result.add(nums[i]);
}
set.add(nums[i]);
}
return result;
}
}
// TC: O(n)
// SC: O(n)