Сначала подсчитайте частоты всех чисел, затем удалите из Map записи с частотой 1. Именно отбор повторов нужен для результата из примера.
Определение количества одинаковых чисел в списке
Сначала подсчитайте частоты всех чисел, затем удалите из Map записи с частотой 1. Именно отбор повторов нужен для результата из примера.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Метод получает список целых чисел и формирует Map, где ключом служит число из списка, а значением — сколько раз оно встречается в исходных данных.
Пример входных данных: [1, 2, 3, 4, 2, 3, 4, 100] Ожидаемый результат: {2=2, 3=2, 4=2}
public class Solution {
public Map<Integer, Integer> calculateRepeats(List<Integer> input) {
// TODO
}
}
Ответ
Сначала подсчитайте частоты всех чисел, затем удалите из Map записи с частотой 1. Именно отбор повторов нужен для результата из примера.
public Map<Integer, Integer> calculateRepeats(List<Integer> input) {
Map<Integer, Integer> counts = new HashMap<>();
for (Integer number : input) {
java.util.Objects.requireNonNull(number);
counts.merge(number, 1, Integer::sum);
}
counts.entrySet().removeIf(entry -> entry.getValue() == 1);
return counts;
}
Импорты List/Map/HashMap из java.util. Null не считается числом. Порядок записей HashMap произвольный, поэтому тестировать нужно равенство Map, а не её строковое представление. Ожидаемое время O(n), память O(k) для количества разных значений.