duplicate-O(1)
class Solution {
public List<Integer> findDuplicates(int[] nums) {
List<Integer> duplicates = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
int value = Math.abs(nums[i]);
int index = value - 1;
if (nums[index] < 0) {
duplicates.add(value);
} else {
nums[index] = -nums[index];
}
}
return duplicates;
}
}