Определение уникальности частоты появления элементов в массиве

Посчитайте частоты чисел, затем проверьте, что среди частот нет повторов. Количество разных частот должно совпасть с количеством разных чисел.

Короткий ответ

Что ответить на собеседовании

Посчитайте частоты чисел, затем проверьте, что среди частот нет повторов. Количество разных частот должно совпасть с количеством разных чисел.

Подробный разбор

Ответ с пояснениями

Условие

На вход передается List под именем numbers, содержащий целые значения. Необходимо вернуть true, если количество вхождений каждого числа в список уникально.

Примеры:

numbers = [1] -> true (1 встречается 1 раз) numbers = [2,2,1,1] -> false (2 встречается 2 раза, 1 встречается 2 раза ⇒ 2==2) numbers = [4,5,5,4,4,10] -> true (4 встречается 3 раза, 5 встречается 2 раза, 10 встречается 1 раз ⇒ 3!=2!=1)

Ответ

Посчитайте частоты чисел, затем проверьте, что среди частот нет повторов. Количество разных частот должно совпасть с количеством разных чисел.

fun uniqueOccurrences(numbers: List<Int>): Boolean {
    val counts = numbers.groupingBy { it }.eachCount().values
    return counts.size == counts.toSet().size
}

Ожидаемое время O(n), память O(k), где k — число разных значений. Для [2, 2, 1, 1] две частоты равны 2, поэтому false. Пустой список возвращает true: конфликтующих частот нет, если условие не оговаривает иное.

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

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

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

Подробнее