Задача из Собеседования в Amazon за 5 минут

preview_player
Показать описание
Разбираем небольшую задачку, которую спросили на собеседовании в Amazon. Такие задачи надо уметь решать за 10-15 минут, но без опыта решения подобных задач найти самое быстрое решение может быть не просто.

Дисклеймер:
И задача, и пост на литкоде находятся в открытом доступе. Я к посту никакого отношения не имею и не могу гарантировать его правдивость.
Рекомендации по теме
Комментарии
Автор

После того когда находишь более менее краткий путь к нужному результату всегда так на душе приятно становится. Внутренний перфекционист удовлетворен.

lockstock
Автор

На собеседовании в амазон:
-Вы умеете не ходить в туалет 12 часов?
-Да
-Вы приняты.

АлексРоман-йю
Автор

Все эти задачки мне почему-то напомнили как один парень у нас в универе сдавал зачёты, подходил к одному спрашивал что спрашивает препод, потом к другому, потом к третьему, в общем так он перебирал абсолютно все варианты что спрашивал препод по конкретной лабе и потом сдавал её.
Но стоило преподу однажды перед ним поставить новую задачу, которую он никогда ни у одного студента не спрашивал, как всё хорошее и закончилось.

igor_yanovich
Автор

Офигеть, до твоих видео вообще не решал алгоритмы и оказывается они намного легче чем я думал. Да и это видео просто change my mind

baksonyanik
Автор

проблема взялась из ниоткуда и мужественно решена ... браво

whitesteel
Автор

Блин, это так просто и так гениально... мне стыдно, что я не додумался до такого решения сам

yjrus
Автор

Такая чистая, приятная и понятная подача, спасибо!

andreyradostny
Автор

как всегда кайф смотреть, хорошо сделано! подача отличная, даже я всё понял, не зная ничего об этом! давай еще и побольше лайв контента!)

kirillschcerbinin
Автор

Я в целом решил таким же образом, только начинал с левого верхнего угла и не считаю, что этот метод менее эффективен. Просто в данном случае, у нас 4 столбца с числами меньше 14 и 2 с числами больше 14, но возможна и обратная ситуация

Nikolas_Z
Автор

Спасибо за задачу. Кажется, что если на каждой строке или столбце, по которым мы передвигались из верхнего правого угла до 14, сделать бинарный поиск, то можно получить что-то около logN + logM

ildarfattahov
Автор

we can do 2 binary searches,
firstly we can go through the rows and find the right row(if the target is greater than the midRow's last element then startRow=midRow+1), and then do a binary search only for that row,
in that case we will have O(logn + logm).

martintopchyan
Автор

Удивительно, но почему то сразу пришел к такому решения 😮 Задача крута! Спасибо!

sunrizz
Автор

Сразу подумал что нужно идти по диагонали.
Вот только не объяснил почему с правого верхнего угла пошли. Без разницы с какого угла идти, числом может быть как ближе к наименьшему так и ближе к на большему, соответственно если искомое число например 2 то поиск будет максимально долгим.
Решение этой задачи можно немного оптимизировать так: mid = (max + min) / 2
Если n < mid то идём по диагонали с верхнего левого угла, если n > mid то с правого верхнего угла. Дальше действуем без изменений.

clere
Автор

если постараться можно уменьшить до O(log(n)+log(m)) для этого надо заменить нахождение спомощю шагов на два бинарных поиска

lironblank
Автор

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

ILikeActions
Автор

С возвращением, Саша. Так мало качественных разборов нынче!

goldstein
Автор

отличное объяснение, надо больше таких накидать Александр)

danila_firstt
Автор

Александр, крутые видео, записывай ещё ) интересно было бы про все этапы собеседования услышать в одном ролике

zemamba
Автор

Чувак, я ничего не понял что ты сказал. Но когда ты стал говорить, ты достучался до моего сердца

ОлегКуликов-жщ
Автор

До такого решения не додумался бы сам, по крайней мере за 10 минут. Спасибо за пример!

Vitek_