Сложность: easy
Дан массив целых чисел arr. Счастливое число — это число, частота которого в массиве равна его значению.
Верните наибольшее счастливое число в массиве. Если счастливого числа нет, верните -1.
Пример:
Input: arr = [1,2,2,3,3,3]
Output: 3
Explanation: 1, 2 and 3 are all lucky numbers, return the largest of them.
👨💻 Алгоритм:
1⃣Создайте хэш-карту для подсчёта частоты каждого числа в массиве.
2⃣Пройдитесь по ключам и значениям хэш-карты, чтобы найти счастливые числа.
3⃣Верните наибольшее счастливое число или -1, если таких чисел нет.
😎 Решение:
public int findLucky(int[] arr) {
Map<Integer, Integer> counts = new HashMap<>();
for (Integer num : arr) {
counts.put(num, counts.getOrDefault(num, 0) + 1);
}
int largestLuckyNumber = -1;
for (Map.Entry<Integer, Integer> entry : counts.entrySet()) {
if (entry.getKey().equals(entry.getValue())) {
largestLuckyNumber = Math.max(largestLuckyNumber, entry.getKey());
}
}
return largestLuckyNumber;
}Ставь 👍 и забирай 📚 Базу знаний