https://leetcode.com/problems/count-largest-group/description/ Easy

Условие

Дано целое число n. Для каждого числа от 1 до n вычисляется сумма его цифр. Числа группируются по этой сумме. Необходимо найти количество групп с наибольшим размером (то есть групп, содержащих максимальное количество чисел).

Решение

fun countLargestGroup(n: Int): Int {
    // Карта для хранения групп по сумме цифр
    val groupSizes = mutableMapOf<Int, Int>()
    
    // Проходим по числам от 1 до n
    for (num in 1..n) {
        // Вычисляем сумму цифр
        var sum = 0
        var temp = num
        while (temp > 0) {
            sum += temp % 10
            temp /= 10
        }
        // Увеличиваем размер группы для этой суммы
        groupSizes[sum] = groupSizes.getOrDefault(sum, 0) + 1
    }
    
    // Находим максимальный размер группы
    val maxSize = groupSizes.values.maxOrNull() ?: 0
    // Считаем количество групп с максимальным размером
    return groupSizes.values.count { it == maxSize }
}