Как модифицировать решение, чтобы вернуть наиболее часто встречающийся элемент массива?

Посчитайте частоту каждого элемента в словаре и выберите максимальную. При равных частотах заранее определите правило, например первое появление во входе.

Короткий ответ

Что ответить на собеседовании

Посчитайте частоту каждого элемента в словаре и выберите максимальную. При равных частотах заранее определите правило, например первое появление во входе.

Подробный разбор

Ответ с пояснениями

Посчитайте частоту каждого элемента в словаре и выберите максимальную. При равных частотах заранее определите правило, например первое появление во входе.

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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее