Определение количества одинаковых чисел в списке

Сначала подсчитайте частоты всех чисел, затем удалите из 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) для количества разных значений.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее