TGViewer
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) @dima_sqlit · 2.22K subscribers
Post #128 2.08K
🛒 Разбор задачи с собеседования Магнит OMNI:

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

Условия задачи (это секция на языке Python):

• Представим что вы пришли в кинотеатр зал которого состоит только из одного ряда.
• Вы хотите сидеть максимально далеко от других зрителей
• Напишите функцию которая принимает на вход список мест в виде 0/1 и возвращает расстояние от оптимального места до ближайшего соседа
• Гарантируется что есть свободные места и хотя бы один зритель

Пример того, как должна работать итоговая функция:
func([1, 0, 1]) == 0
func([1, 0, 0, 0, 0, 1]) == 1
func([1, 0, 0, 0, 0, 1, 0, 0, 0, 0]) == 3
func([0, 0, 0, 0, 0, 1, 0, 0, 0, 1]) == 4


Разбор задачи по шагам:

Я сразу покажу вам решение, чтобы мы его разобрали.
def func(seats):
occupied = [i for i, seat in enumerate(seats) if seat == 1]
best = []

for i, seat in enumerate(seats):
if seat == 0:
dist = min(abs(i - j) - 1 for j in occupied)
best.append(dist)

return max(best)


Давайте разбираться, что здесь происходит:

1) Сначала проходимся по списку и находим места, которые заняты:
occupied = [i for i, seat in enumerate(seats) if seat == 1]


То есть мы проверяем, если значение равно 1, то это место занято и мы сохраним индекс этого места в списке

2) Далее посмотрим все не занятые места и найдем для каждого из них минимальное расстояние до занятого места и вычтем единицу и будем добавлять эти расстояния в список:
    for i, seat in enumerate(seats):
if seat == 0:
dist = min(abs(i - j) - 1 for j in occupied)
best.append(dist)


3) Отлично, теперь остается взять наибольшее значение из списка и получить ответ:
return max(best)


Итог: 🤩

🍸 Сохраняйте пост, чтобы успешно пройти собеседование
❓ Как бы решили вы? Делать еще подобные разборы? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
  • ❤‍🔥 10
  • 🐳 9
  • 🔥 4
More from @dima_sqlit
  1. Sep 22, 2026Что сейчас стоит изучать Аналитику — чтобы перейти в DS/ML ? Замечаю общий тренд на изучен…
  2. Sep 21, 2026🧠 Уровень абстракции — навык, который сэкономит вам годы учёбы: Когда я начинал изучать P…
  3. Sep 18, 2026🏦 Задача с собеса в Т-банк на SQL: вторая зарплата в отделе Условие: есть таблица сотрудн…
  4. Sep 16, 2026🏠 IT ипотека (Часть 3) — Как я сэкономил на ремонте: кэшбэк, промокоды и один неочевидный…
  5. Sep 7, 2026🍂 Осень — сезон найма: Каждый год одна и та же история — в сентябре рынок будто просыпает…
  6. Aug 24, 2026P-value простыми словами: Условие: подбросили монету 10 раз, выпало 9 орлов. Можно ли тепе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →