Посчитайте частоту каждого элемента в словаре и выберите максимальную. При равных частотах заранее определите правило, например первое появление во входе.
Как модифицировать решение, чтобы вернуть наиболее часто встречающийся элемент массива?
Посчитайте частоту каждого элемента в словаре и выберите максимальную. При равных частотах заранее определите правило, например первое появление во входе.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Посчитайте частоту каждого элемента в словаре и выберите максимальную. При равных частотах заранее определите правило, например первое появление во входе.
Swift-вариант для Hashable:
func mostFrequent<T: Hashable>(_ values: [T]) -> T? {
var counts: [T: Int] = [:]
for value in values { counts[value, default: 0] += 1 }
var result: T?
var maximum = 0
for value in values {
let count = counts[value, default: 0]
if count > maximum {
maximum = count
result = value
}
}
return result
}
Второй проход по исходному массиву сохраняет выбранное правило ничьей; обход Dictionary для этого не подходит. Среднее время O(n), память O(k) для k различных значений. Для пустого массива возвращается nil.