class Solution {
public int duplicateInArray(int[] nums) {
Map[HTML_REMOVED] numberMap = Arrays.stream(nums)
.boxed()
.collect(Collectors.groupingBy(num -> num, Collectors.counting()));
Map<Integer, Long> resultMap = numberMap.entrySet().stream()
.filter(entry -> entry.getKey() < 0 || entry.getKey() > nums.length)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
if (!resultMap.isEmpty()) {
return -1;
}
Map<Integer, Long> resultMap1 = numberMap.entrySet().stream()
.filter(entry -> entry.getValue() > 1 )
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
if (resultMap1.isEmpty()) {
return -1;
} else {
return Math.toIntExact(resultMap1.keySet().stream().collect(Collectors.toList()).get(0));
}
}
}