Посчитайте частоты чисел, затем проверьте, что среди частот нет повторов. Количество разных частот должно совпасть с количеством разных чисел.
Определение уникальности частоты появления элементов в массиве
Посчитайте частоты чисел, затем проверьте, что среди частот нет повторов. Количество разных частот должно совпасть с количеством разных чисел.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
На вход передается 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: конфликтующих частот нет, если условие не оговаривает иное.