|
| 1 | +importjava.util.Map.Entry; |
| 2 | + |
1 | 3 | classSolution {
|
2 | 4 | publicint[]findErrorNums(int[]nums) {
|
3 |
| -Map<Integer,Integer>frequency =newHashMap<>(); |
4 |
| -for (intnum :nums) { |
5 |
| -frequency.put(num,frequency.getOrDefault(num,0) +1); |
6 |
| - } |
7 |
| -int[]ans =newint[2]; |
8 |
| -for (intidx =1;idx <=nums.length;idx++) { |
9 |
| -if (!frequency.containsKey(idx)) { |
10 |
| -ans[1] =idx; |
11 |
| - }elseif (frequency.get(idx) >1) { |
12 |
| -ans[0] =idx; |
13 |
| - } |
14 |
| - } |
15 |
| -returnans; |
| 5 | +HashMap<Integer,Long>frequencyMap =Arrays.stream(nums).boxed() |
| 6 | + .collect(Collectors.groupingBy(Function.identity(),HashMap::new,Collectors.counting())); |
| 7 | +returnnewint[]{ |
| 8 | +frequencyMap.entrySet().stream().filter(entry ->entry.getValue().equals(2L)) |
| 9 | + .map(Entry::getKey).findFirst().orElse(-1), |
| 10 | +IntStream.range(1,nums.length +1).boxed().filter(key -> !frequencyMap.containsKey(key)) |
| 11 | + .findFirst().orElse(-1) |
| 12 | + }; |
16 | 13 | }
|
17 | 14 | }
|