Задача с собеседования на Junior Python разработчика #shorts #python

preview_player
Показать описание
Задача с собеседования на позицию Junior Python разработчика. Как найти максимально часто повторяющийся элемент в списке.
#shortsfeed #shortsvideo #shortsfeed #shortsyoutube #python #programming #работа #фриланс
Рекомендации по теме
Комментарии
Автор

Надо подключить библиотеку для решения задач собеседований.

kostya
Автор

Это явно задача на знание алгоритмов, и решение ожидается соответственное

cmrisnu
Автор

Решить за линию, не
Решить за квадрат, всегда пожалуйста)

NoInternetName
Автор

А как работает преобразование во множество? Мы же таким образом уберем все дубликаты, что он в таком случае будет считать

mkgs
Автор

За один цикл по списку можно найти максимальное количество вхождений. Функции max и count медленные, поэтому лучше реально циклом

pselloni
Автор

Прекрасная оптимизация. Перевести в set это ещё одна пригонка по массиву ещё и с условием. Оптимизировали моЧно(от слова урина)

KonstantinSemenow
Автор

Не знаю что под капотом (работает за О(n) - поправьте, если не так) функции max.

Пользуемся хэш таблицей и храним пару (цифра, количество). Тогда aсимптотика получится за O(n), из за того что проверить - О(1), запомнить - О(1), макс получаем после конца цикла подсчетом.

sb
Автор

Почему говоришь что решение эффективное, если у тебя для каждого значения будет считаться колличество вхождений перебором всего списка. В итоге эффективность - O(K*N), где K - колличество уникальных значений, а N длинна списка. Уж лучше перебрать один раз весь список и эффективность будет O(N)

killerbi
Автор

Ребята, можно вместо set(my_list) прописывать list(dict.fromkeys(my_list)) метод fromkeys вернёт словарь, ключами которого будут элементы списка (но мы помним, что в словарь не может содержать одинаковые ключи, поэтому мы не будем перебирать одно число несколько раз), а значением словаря будет — None, после оборачиваем метод fromkeys класса dict в list, получим список без повторений. Либо обарачиваем в set, если нам нужно множество. А так ключом мы указываем count, то выберется элемент, который встретился больше всего раз. Всем спасибо!

turikarturik
Автор

Тяжело сказать, что использование set ускорит код. Ровно наоборот, ведь во-первых в разы увеличиться использование памяти, во-вторых, сама функция set проходится по всем элементам списка. То есть ещё один обход, это просто лишнее

ilrmlsr
Автор

Это решение не убирает циклы, а просто скрывает. К тому же за счет использования count + max у решения квадратичная сложность, хотя задача спокойно решается за линейную тем же самым циклом и словарем или за n log n за счет сортировки

normal
Автор

А циклом пробежать, записать в мап и потом оттуда брать? O(n²) вам больше нравится, чем O(n)? Зато строчек меньше 😂😂😂

Sanya_Nub_voin
Автор

Для большей скорости нужно использовать бинарный поиск для нахождения количества элементов

TeaserSport
Автор

Подключить Counter из collections и через метод most_common вывести первый ключ?

alexxlobov
Автор

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

duknypv
Автор

Что за плагин в терминале такой интересный ?

Malrock
Автор

А я бы с помощью Counter пошла бы. Надо попробовать

Sunwait-nsk
Автор

Больше полезной информации, спасибо друг!

Zer-stqv
Автор

Если уж так извращаться можно и Counter использовать)

Furkas
Автор

Черт, а я не догадался. Пришлось лямбду подрубить:
print(max(a, key=lambda number: a.count(number)))

richardplantagenet