961. N-Repeated Element in Size 2N Array

LeetCode の挑戦ログ

Problem

https://leetcode.com/problems/n-repeated-element-in-size-2n-array/

  • 2N サイズの配列が与えられる
  • N+1 種類の整数が含まれている
  • 一つの要素が N 回繰り返されている
  • N 回繰り返されてる数を特定する

Solution

class Solution {
    public int repeatedNTimes(int[] A) {
        return Arrays.stream(A).boxed()
                .collect(Collectors.groupingBy(i -> i, Collectors.counting()))
                .entrySet().stream()
                .filter(it -> it.getValue() == A.length / 2)
                .map(Map.Entry::getKey)
                .findAny()
                .orElse(0);
    }
}

Impressions

  • Collectors.groupingByCollectors.counting() を組み合わせることで、Key ごとの数という Map が作れる
    • collect(Collectors.groupingBy(i -> i, Collectors.counting()))
  • 本当は groupingBy のところを自前で書くような問題なんだろう

References