https://leetcode.com/problems/find-lucky-integer-in-an-array/description/ Easy

Условие

Дан массив целых чисел arr. Счастливым числом называется число, которое встречается в массиве столько раз, сколько оно само (например, если число 3 встречается ровно 3 раза). Необходимо найти наибольшее счастливое число в массиве. Если счастливых чисел нет, вернуть -1.

Решение

fun findLucky(arr: IntArray): Int {
    // Подсчитываем частоту каждого числа
    val freq = mutableMapOf<Int, Int>()
    for (num in arr) {
        freq[num] = freq.getOrDefault(num, 0) + 1
    }
    
    // Находим счастливое число (где частота равна числу)
    var lucky = -1
    for ((num, count) in freq) {
        if (num == count) {
            lucky = maxOf(lucky, num)
        }
    }
    
    return lucky
}