findElementsRepeatedExactlyKTimes<T> function

List<T> findElementsRepeatedExactlyKTimes<T>(
  1. List<T> list,
  2. int k
)

Returns a list of elements that appear exactly k times in the input list.

Implementation

List<T> findElementsRepeatedExactlyKTimes<T>(final List<T> list, final int k) {
  if (k <= 0) {
    throw ArgumentError('k must be greater than 0');
  }

  final Map<T, int> countMap = <T, int>{};

  for (final T element in list) {
    countMap[element] = (countMap[element] ?? 0) + 1;
  }

  return countMap.entries
      .where((final MapEntry<T, int> entry) => entry.value == k)
      .map((final MapEntry<T, int> entry) => entry.key)
      .toList();
}