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.length1 <= n <= 1051 <= nums[i] <= n- Each element in
numsappears 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)