Задача из Собеседования в Google и Amazon

Поделиться
HTML-код
  • Опубликовано: 14 ноя 2024

Комментарии • 1,1 тыс.

  • @senior_javist
    @senior_javist  Год назад +140

    📌ССЫЛКА НА TELEGRAM В ОПИСАНИИ ПРОФИЛЯ

    • @Shon_TITAN_Group
      @Shon_TITAN_Group Год назад +1

      Бывает

    • @Username_120
      @Username_120 Год назад +1

      Очень круто 👍 вроде просто, но эффективно! Подскажите, вы в джаве на каких проектах работаете?

    • @БорисНазаров-х7к
      @БорисНазаров-х7к Год назад +3

      Это неоптимальный алгоритм, надо использовать бинарный поиск по началам строк и столбцов.

    • @pavelnozhevnikov330
      @pavelnozhevnikov330 Год назад +1

      3 шаг: 7 больше 9? А 8 меньше?))))) Что-то тут не так....

    • @diknik1148
      @diknik1148 Год назад +1

      Зада не решена, тк это не самое оптимальное решение с ассимптотической сложностью n*m. Бинарный поиск даст log, если двигаться по диагоналям

  • @subobus_516
    @subobus_516 Год назад +4709

    «Семь больше девяти»
    Ауф

    • @sasmatres2731
      @sasmatres2731 Год назад +263

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

    • @psevdonim932
      @psevdonim932 Год назад +127

      @@sasmatres2731 ты уверен, что Энштейн хоть как-то тут связан с этим утверждением?

    • @ruden6623
      @ruden6623 Год назад +13

      Я думал мне показалось)

    • @denzeroneYT
      @denzeroneYT Год назад

      ​@@shinsentennouzu2564Это тут к чему? А что с украинцами не так, или ты типичный зомби? Люди бояться за свою землю, за свои дома, а ты как типичный чел, который верит пропаганде, из-за русни, ганд***, людям приходилось покидать свои дома, в которых они прожили всю жизнь, в итоге, знаю случай, когда люди успели выехать, и немного позже, заметили свой дом на Авито, нормально бл***? Почему вы такие идиоты, считаете что отнимать чужие дома "нормально", это насколько надо быть безчеловечным, вы от нищеты идете за деньги уб**ать своих "братьев", и после этого ты будешь что-то говорить про украинцев? Тут даже не в сумме дело, сколько бы не заплатили, адекватный человек никогда бы такого не сделал, при том, зайдя на чужие территории с оружием вы уже являетесь окупантами, которые уб***т невинных людей, которые просто защищают свое. А в итоге такие тупые как ты, пишут подобный бред, вот скажи, к тебе бы в дом ворвались, забирали все, а ты бы молча на это смотрел? Даже если да, вы терпилы, вы боитесь свою власть, она вас очень сильно запугала, как минимум, можно увидеть по митингам, которые в других странах проходят, но у вас почти нет, ведь выходишь с листком, и сажают, а вышли бы все, всех бы не пересажали, но вы безчеловечные, только если это вас коснется, возможно когда-то и выйдете.

    • @Denisg601
      @Denisg601 Год назад +19

      А 8 меньше девяти. Что такое 9? 😂😂😂

  • @GG_Shokk751
    @GG_Shokk751 Год назад +5545

    В условии не указывается, то что все числа заполняются по увеличению. Решать задачу по первому примеру - не разумно.
    Все условия задачи надо указывать в начале, а не по мере решения

    • @Nobody-ju6pt
      @Nobody-ju6pt Год назад +219

      Именно, просто гении программисты из гугла)))

    • @Podkarpatskay_Ukraina
      @Podkarpatskay_Ukraina Год назад +56

      ​@@Nobody-ju6ptну как по мне для галочки этот метод стоить знать или хотябы учесть.Но я бы скорее всего делал класический перебор в таком случаи ,так бы все варианты чисел и их рандомность была затронута

    • @Nobody-ju6pt
      @Nobody-ju6pt Год назад +27

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

    • @Podkarpatskay_Ukraina
      @Podkarpatskay_Ukraina Год назад +4

      Согласен

    • @АлексейЩербаков-ъ5г
      @АлексейЩербаков-ъ5г Год назад +5

      ​@@Nobody-ju6pt это проверяет твою способность к оптимизацией задач, сделала решение в тупую тебя бы на работу не взяли.

  • @softed
    @softed Год назад +1744

    -Обратите внимание, 9 находится в центре матрицы, задача решена

    • @kosiak10851
      @kosiak10851 Год назад +7

      ты украл то, что я только хотел сказать. Короче, зашёл в комментарии за этим комментарием.

    • @FedjaM1
      @FedjaM1 Год назад +50

      Обратите внимание, 9 находится в центре, поэтому начнём поиск с центра.

    • @softed
      @softed 11 месяцев назад +53

      @@bodstor, суть в том, что автор выдумал выгодные для себя условия

    • @maxajax9181
      @maxajax9181 9 месяцев назад +1

      Пхахах, вы приняты в Гугл!

    • @Максим-п1ж1д
      @Максим-п1ж1д 8 месяцев назад

      ​@@maxajax9181он в гугл и работает. Видосы выкладывает на ютуб.

  • @oduwancanitbe3545
    @oduwancanitbe3545 Год назад +512

    Пока есть такие учителя, я спокоен за свою работу)

    • @kipiwpartner
      @kipiwpartner 10 месяцев назад +7

      Это точно))

    • @ОльгаДубровина-к3с
      @ОльгаДубровина-к3с 10 месяцев назад +20

      А вдруг нас лечат такие же врачи? Страшно

    • @ilya2022
      @ilya2022 10 месяцев назад +2

      Бред полный рассказывает?)

    • @vovamagic659
      @vovamagic659 9 месяцев назад +5

      Он сам придумал это задание 😂

    • @imbogdan5883
      @imbogdan5883 8 месяцев назад +1

      Мне нужно 13

  • @BBshilo
    @BBshilo Год назад +725

    Чел, который устраивается уборщиком в гугл:😐

    • @sherwoodhayes859
      @sherwoodhayes859 Год назад +14

      это планировка кабинетов в офисе

    • @IhorKramarenko
      @IhorKramarenko Год назад +4

      И так и не устроился

    • @artem_iz41
      @artem_iz41 Год назад

      Ждал этого коммента

    • @Beda_aviacompany
      @Beda_aviacompany 9 месяцев назад

      Или грузчиком в амазон

    • @Moptohor
      @Moptohor 17 дней назад

      Задача: оптимально подмести пол, который выглядит как шахматная доска, а в каждой клетке n единиц мусора

  • @vabka-7708
    @vabka-7708 Год назад +1306

    В условии не сказано, что данные отсортированы.

    • @chu_ri5470
      @chu_ri5470 Год назад +20

      Если они отсортированы, то можно просто вычислить позицию девятки. Зная N M и любое числи в матрице.

    • @vabka-7708
      @vabka-7708 Год назад

      @@chu_ri5470 нет.

    • @octothorpe3377
      @octothorpe3377 Год назад +26

      Да там масса решений. Просто аффтар хайпует)

    • @realfootball338
      @realfootball338 Год назад +1

      Он сказал что возрастание - слева на право и с верху вниз. Отсортированние массиви ето основа бистрого поиска. Там дальше применими алгоритми по типу бинарного поиска

    • @Torbjorn-ph7rt
      @Torbjorn-ph7rt Год назад

      ​​@@realfootball338этого в условии задачи нет. Мы принципиально НЕ должны ориентироваться на частные случаи не прописанные в задаче либо должны перебрать их все.

  • @hiperriper94
    @hiperriper94 Год назад +634

    Заходит как то тестировщик и перемешивает значение в таблице)

    • @ИмяФамилия-е7м4л
      @ИмяФамилия-е7м4л Год назад +94

      Был бы я тестировщиком я б туда ещё и символов накидал 😂

    • @hiperriper94
      @hiperriper94 Год назад

      @@ИмяФамилия-е7м4л в qa уже лет 10. Таблицу можно просто заполнить нулями и отрицательным числом😂

    • @ВиталийПо-ю2д
      @ВиталийПо-ю2д Год назад +2

      Но мы то заранее все сортируем

    • @alexeybityukov7849
      @alexeybityukov7849 Год назад

      @@ВиталийПо-ю2д тогда обычный перебор бeдет значительно эффективней

    • @Alexandr_Zavgorodniy
      @Alexandr_Zavgorodniy Год назад

      @@ВиталийПо-ю2д тогда проще перебором найти или include :)

  • @Nidvoraich
    @Nidvoraich Год назад +305

    В условии ничего не сказано о сортированности массива, камон

    • @senior_javist
      @senior_javist  Год назад +11

      пересмотри видео, цитирую "все строки и столбцы идут в порядке возрастания".

    • @Nidvoraich
      @Nidvoraich Год назад +125

      ​@@senior_javistпересмотрел :)
      У тебя массив М на Н, надо найти число К.
      То, что в данном конкретном примере числа упорядочены каким-то образом, не гарантирует, что они будут упорядочены в следующий раз.
      А размерность массива, обозначенная буквами, а не цифрами, как бы намекает на то, что массив может быть дан другой.

    • @senior_javist
      @senior_javist  Год назад +3

      @@Nidvoraich я не говорю о конкретном массиве, я говорю об условии. В любом другом массиве числа будут упорядочены тоже. Если бы этого условия не было, я бы не показывал данный метод решения.

    • @vabka-7708
      @vabka-7708 Год назад +97

      @@senior_javist значит ошибся при озвучке, тк действительно нет никакого упоминания о том что данные как-то упорядочены.
      Из картинки вообще не понятно, как именно они упорядочены.
      (На сколько я понял - всё что справа - точно больше, чем то что слева.
      То что снизу - точно больше, чем то что сверху. Но это не распространяется на диагонали)
      В общем проблема скорее в подаче.

    • @ananaseek
      @ananaseek Год назад

      Верно, условие дано не полное.@@vabka-7708

  • @Batoev
    @Batoev Год назад +397

    По этой логике почему бы не начать с центра?) и о чудо- совпадение будет сразу🤣🤣🤣

    • @theforgottenes2552
      @theforgottenes2552 Год назад +5

      ? Нужное число необязательно будет в центре, однако двигаясь способом из видео оно будет гарантированно найденно за не самое большое количество времени

    • @reeky4265
      @reeky4265 Год назад +52

      ​@@theforgottenes2552В условии массив не отсортирован, а в примере нам просто повезло.

    • @pavelbolkhovitin3687
      @pavelbolkhovitin3687 Год назад +24

      @@theforgottenes2552 массив отсортирован какой-то "хитрой" логикой, а если он будет случайно заполнен, а если другой размерности будет, а если еще что-то. Решение частного случая причем подгонка под результат, а не оптимизацию решения.

    • @СадовникАлматы
      @СадовникАлматы Год назад +9

      ​@@theforgottenes2552а где в условии изначально сказано что числа в столбиках растут вниз?

    • @Torbjorn-ph7rt
      @Torbjorn-ph7rt Год назад +19

      "Обратим внимание, что число 9 в таблице есть. Решение: return true."

  • @user-lisiipen
    @user-lisiipen Год назад +330

    Это не та задача. На самом деле в Google и Amazon задают такую:
    Пупа и Лупа пошли за зарплатой. В бухгалтерии все перепутали. Лупа получил зарплату за Пупу. Что получил Пупа?

  • @andrewdok3595
    @andrewdok3595 Год назад +82

    Супер-решение, под один частный случай. Осталось написать решениЯ под оставшиеся 750 вариантов (не учитывая возможные повторения чисел) илли триллион если числа могут повторяться

    • @_Kapc
      @_Kapc Год назад

      Почему под один частный случай?

    • @andrewdok3595
      @andrewdok3595 Год назад +8

      @@_Kapc Потому что в условиях, до начала кодинга и составления алгоритма - Это Важно. Ничего не говорилось о правилах или особенностях наполнения массива. Данный массив можно рассматривать как Пример, для проверки должен быть предоставлен и другой - контрольный, по которому и будет проводиться оценка.
      Здесь же рассмотрен Частный случай

    • @_Kapc
      @_Kapc Год назад

      @@andrewdok3595 это действительно так, но если опустить этот момент и считать, что в условиях все прописано, алгоритм ведь будет работать

    • @____-po8ro
      @____-po8ro Год назад +5

      @@_Kapc
      >если опустить этот момент и считать, что в условиях все прописано, алгоритм ведь будет работать
      Если в условиях прописано ВСЕ, то этот мегакостыль вместо алгоритма сломается на первом неупорядоченном массиве. Потому что в условиях нет упорядоченности.

    • @pokalnetovps
      @pokalnetovps Год назад

      Почему 750?
      Если из тех чисел, что там есть
      То это(5х5)!
      Т.е. факториал 5

  • @vcemdobraibobra
    @vcemdobraibobra Год назад +11

    «Это было самое трудное собеседование на должность уборщика, но я его прошёл…»

  • @rocketman4072
    @rocketman4072 Год назад +12

    Если конкретно в этом массиве и с конкретно таким заданием, я бы вообще начал поиск с середины и выполнил её за 1 шаг 😂

  • @Victor16rus
    @Victor16rus 11 месяцев назад +14

    В условии задачи ещё забыли указать, что 7 больше 9-ти. И если видите, что числа в порядке возрастания, то видите и то, где находится девятка и нефиг её искать через какое-то там решение.

  • @PavelVolyntsev
    @PavelVolyntsev 2 месяца назад +4

    В условие надо вписать что матрица упорядоченная
    В упорядоченном массиве искать проще всего методом половинного деления или его же называют бинарный поиск
    В данном случае в ячейку M{3;3} попадаем с первой итерации: число 9 - оно как раз посередине
    Но если дополнительно, для оптимизации вычислений, чтобы не делать бесполезный поиск если значение в матрице выходит за границы макс мин значений, надо проверить ячейки M{1;1} и M{5;5}; тогда решение (число 9) будет найдено за три итерации - проверям мин, проверям макс, далее метод половинного деления начиная с центральной ячейки

  • @РусланСавельев-ц7э

    Класс, когда вам дадут новую расстановку чисел вы снова будете переписывать алгоритм?

    • @followthedark5140
      @followthedark5140 11 месяцев назад

      автор как и 28 клоунов никогда не слышали что можно на примере отдельно взятого алгоритма разработать универсальный который и буквы будет понимать и блуждать будет по закоулкам массива до тех пор пока либо не вернет тру либо закончатся переменные в лице положения строк-столбцов...

    • @Rizengard
      @Rizengard 3 месяца назад

      @@followthedark5140 поздравляю, ты вспомнил о переборе массива. По сути базису, который тебе дают чуть ли не в школе.
      На основе этого алгоритма можно действительно сделать любой другой. Точно так же, как из гранитного куба сделать колесо для майбаха. Первым шагом будет - продать красивый, но бесполезный камень и купить колесо.
      А еще можно было бы извернуться и сказать что в js можно использовать Array.includes() и не иметь себе мозг. Впрочем такое решение было бы даже лучше, хотя бы потому что не основано на частном случае решения общей задачи.

  • @chaoswires2734
    @chaoswires2734 11 месяцев назад +15

    А где в условии дано, что числа в матрице всегда будут отсортированы каким-либо образом? Матрицу 2000х4500 тоже глазами смотреть для решения?

  • @baboomka
    @baboomka Год назад +12

    Бинарный поиск вышел из чата

    • @perfectogamer3349
      @perfectogamer3349 Год назад

      но он тут не сильно подойдет, т.к. тут числа не упорядочены по возрастанию) Если сначала упорядочить, то да, но цена такой операции наверное высокая

    • @ctrlalt2205
      @ctrlalt2205 9 месяцев назад +2

      ​@@perfectogamer3349что? Наверно?? Сложность сортировки известна любой бабке околоподъездной. А ещё этот клоун сам говорит, что отсортирована матрица. Так что бинарным тут очень даже изи решить

    • @oxfaaaaa9687
      @oxfaaaaa9687 12 дней назад

      ​@@perfectogamer3349ну если принять, что каждая строка и столбец упорядочены по возрастанию, то тут за 2 бинпоиска задача решается - сначала ищем в первой строке, получаем индекс i, затем ищем в i-том столбце

  • @ВитСкор-х8й
    @ВитСкор-х8й Год назад +11

    С прикладной точки зрения это решение не имеет ни каких преимуществ. Так как обычно массив данных заполняются более менее рандомно

    • @chesscat553
      @chesscat553 18 дней назад

      Даже в данном виде оно не оптимальное, для больших особенно матриц, надо начинать с середины, и потом двигаться на четверть, потом на одну восьмую и так далее, при огромных матрицах решение будет намного быстрее.

  • @tepr1
    @tepr1 6 месяцев назад +2

    Решение на c++:
    1) Делаем Vector а(n*m)
    2) Заполняем его
    3)
    if (lower_bount(a.begin(), a.end(), k) == k) {
    return true;
    }
    return false;
    Сложность алгоритма: O(log n), если откинуть заполнение массива
    P.S. lower_bount можно заменить либо upper_bount, либо своей функцией

    • @Vladimir-ui3ij
      @Vladimir-ui3ij 23 дня назад

      1. lower_bount использует бинарный поиск, который правильно работает только на отсортированном массиве. Здесь массив сортирован фрагментарно, на нем не будет работать правильно.
      2. На данном массиве, при к=9 бинарный поиск начинается с середины и, о чудо, там девятка - поиск закончен.

    • @Vladimir-ui3ij
      @Vladimir-ui3ij 23 дня назад

      На самом деле нет, середина массива 25/2=12.5, при округлении дает 12 а не 13, как в математике. Если предположить, что if (lower_bount(a.begin(), a.end(), k) == k) -это псевдо запись (она просто напросто не скомпилируется) чтобы не загромождать сообщение, а девятку ты как-то получил, то в свою очередь можно предположить, что ты принял за верный результат позицию в массиве, который выдал алгоритм lower_bound, а именно v[9]==12

  • @vaysnow
    @vaysnow Год назад +18

    Семь больше девяти... И после этого меня не остановить 😂

  • @VANSSOFT
    @VANSSOFT Год назад +6

    Было бы справедливо посчитать нагрузку всех этих алгоритмов, а то может оказаться что поиск быстрее на 1% но ресурсов жрёт в 2 раза больше

  • @Абвгд-м5ю
    @Абвгд-м5ю 11 месяцев назад +13

    Не рабочий алгоритм - вместо 9 в центре разместите 10, а девятку мы засунем вместо 6. А на случай если числа не повторяются, тогда сместите два нижних ряда на +100, например.

    • @roma_prokopov
      @roma_prokopov 8 месяцев назад

      Тогда 10 повторяется. Лучше переставить так: 9 -> 6 -> 7 -> 8 -> 10 -> 9.

    • @Абвгд-м5ю
      @Абвгд-м5ю 8 месяцев назад +1

      @@roma_prokopov а не важно, один фиг решение не работает

    • @Darth_Vane
      @Darth_Vane 3 месяца назад

      Ты не въехал в алгоритм: попав в ячейку сравниваем ее с искомым, если больше искомого движемся влево, если меньше вниз.
      Будет в центре 10, а 9 на месте 6, то после 10 пойдет влево, где как раз и находится 9.
      Все отлично работает. Поменять местами 9 и 10 = 8 - 10 (9) - 6 - 13 - 9 (10)
      Будь 11 на месте 9 . Прошлось бы 8 - 11 - 6 - 13 - 10. А дальше надо влево, но индекс за рамками массива, значит идти некуда - false.

  • @evgeniibubolev9881
    @evgeniibubolev9881 Год назад +112

    Зачем начинать с конца? Надо начинать с середины, бинарный поиск эффективнее.

    • @SabFo_
      @SabFo_ Год назад +10

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

    • @josefkerr4124
      @josefkerr4124 Год назад +1

      да, но для другой задачи с литкода

    • @nitebo1
      @nitebo1 Год назад +17

      @@SabFo_для бинарного поиска достаточно упорядоченного массива и гарантии того, что число К есть в этом массиве. Поэтому тут лучше провернуть бинарный поиск, тк сложность его O(logN) а в худшем случае алгоритма автора будет сложность O(N) (если число К будет в нулевом столбце последнего ряда), что не является самым эффективным решением

    • @ГеоргийЛухтура-в8м
      @ГеоргийЛухтура-в8м Год назад +1

      ​@@nitebo1Бинарный поиск следует применить к каждой строке, поэтому сложность будет MlogN. Алгоритм, представленный автором, эффективнее

    • @nitebo1
      @nitebo1 Год назад +7

      @@ГеоргийЛухтура-в8м зачем? Сначала к строке, потом к столбцу, сложность log(n*m) что лучше линейной

  • @emelya2644
    @emelya2644 Год назад +23

    Вот из-за таких способов решения и страдает оптимизация и появляются баги

    • @koshkokoshka
      @koshkokoshka 11 месяцев назад

      ​@@edfiw89 У нас для того и существуют многопоточные процессоры, чтобы пользоваться ими и эффективно решать подобные прикладные задачи. Чем прямолинейнее будет реализация, тем проще будет компилятору и процессору её распараллелить. Решение из видео красиво смотрится с точки зрения теории алгоритмов, но будет иметь сомнительную эффективность в реальном мире на практике, где помимо теории о сложности алгоритмов существует множество других факторов, связанных с тем, как реально работает современное компьютерное железо.
      Как раз таки из-за оверинжиниринга у нас и страдает производительность, когда вместо простых решений разработчики преждевременно пытаются всё "оптимизировать". В итоге имеем вот такой труднопроддерживаемый код под один конкретный случай, в котором на беглый взгляд разберётся только сам его автор.

    • @moriyamakyon1067
      @moriyamakyon1067 9 месяцев назад +1

      @@edfiw89 "поясни, какия оптимизация страдает?"
      под другой массив придеться писать другой код.
      "Как раз из-за отсутствия таких решений тебе надо ПК на 2 миллиарда оперций в секунду в 8 потоков"
      как раз из за таких решений это и происходит

  • @lexandrz853
    @lexandrz853 2 месяца назад +1

    7 больше 9-ти... Советы "Как попасть в чёрный список навсегда!!!"😂😂😂

  • @austinpowers7361
    @austinpowers7361 Год назад +23

    В самом начале правильно сказали про диагональ. Но потом что-то пошло не так.
    Надо начать от центра и двигаться по диагонали. А затем максимум два бинарных поиска по столбцу и строке. Выходит m/2+2log(n)

    • @protiv_bio
      @protiv_bio 11 месяцев назад

      А в чем смысл "/2", реально это надо озвучивать интервьюерам? Это же не временная сложность уже, там константы игнорируются. Я бы и m опустил, докопаются если "примерно log(n)" сказать?

    • @MarsY-w4p
      @MarsY-w4p 10 месяцев назад +1

      А вот если 18 искать, то как ваш алгоритм работает? Мне кажется здесь сложность будет log(n)*log(m). А то что предлагает автор явно будет n+m, что явно не самый оптимальный вариант.

    • @VIKTORMOROZOV-yx3yh
      @VIKTORMOROZOV-yx3yh 2 месяца назад

      @@MarsY-w4p На самом деле надо тестить на матрице 1000*1000 кучей прогонок, сейчас каджый видя матрицу подбирает число в ней, с самым пессимистичным вариантом. То что предлагает автор видео проще имплементируемо так как поиск итерируется только вниз и влево, то что предлагает автор коментария сложно реализуемо, так как у него итерация идет в 4 стороны еще и поиск разбивается на отдельные стримы. В случае с 18 он дойдет по диагонали до 30 а потом должен идти и вверх и влево. Оптимизацией может быть сравнение искомого числа с мин и макс в матрице, и если ищем 23 то начинаем с 30, если ищем 6, то начинаем с 1

  • @MagicMightNew
    @MagicMightNew Год назад

    Какая-то экстремально простая задача. Эффективное решение пришло в голову ещё до полного озвучивания условия

  • @СтаниславЗайченко-е6ф

    If 9 in arr:
    Print("True")
    Else:
    Print("False")

    • @narekstar6174
      @narekstar6174 10 месяцев назад +2

      Python! Best pl

    • @rofe9285
      @rofe9285 Месяц назад

      Были бы в питоне ещё двумерные списки...

    • @qwer3ty68
      @qwer3ty68 Месяц назад

      ​@@rofe9285скорее матрицы или двумерные массивы но не списки

    • @user-qwerty999
      @user-qwerty999 10 дней назад

      А какая сложность алгоритма? Или вы думаете, что в нутри этой фунции магия.?

    • @rofe9285
      @rofe9285 10 дней назад

      @@user-qwerty999 а то есть тот факт, что такая проверка не пройдёт никогда, тебя вообще не смущает?

  • @shshshssiinsijsij
    @shshshssiinsijsij Месяц назад +1

    dict = [k for k in m]
    if 9 in dict:
    print(True)

  • @nitebo1
    @nitebo1 Год назад +18

    Почему не бин поиск?
    ​​⁠для бинарного поиска достаточно упорядоченного массива и гарантии того, что число К есть в этом массиве. Поэтому тут лучше провернуть бинарный поиск, тк сложность его O(logN) а в худшем случае алгоритма автора будет сложность O(N) (если число К будет в нулевом столбце последнего ряда), что не является самым эффективным решением

    • @yatelevizor
      @yatelevizor Год назад +1

      Можно и бп за log(n) + log(m)

    • @ubiwan7936
      @ubiwan7936 Год назад

      Я могу доказать, что меньше, чем за (min(M, N)) нельзя. В случае квадратного массива, это будет N

    • @nitebo1
      @nitebo1 Год назад

      @@ubiwan7936 я тупанул сорян. Уже понял ошибку

    • @Neurdan
      @Neurdan Год назад

      ​@@ubiwan7936докажи пожалуйста

  • @0imax
    @0imax 15 дней назад

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

  • @User-cvhuidghjv
    @User-cvhuidghjv Год назад +3

    Не самый быстрый способ, я бы начинал с середины и определял куда идти - вправо или влево, при чем можно идти половиннами длинны.
    Просто возьми массив 1000 на 1000, берем 500й элемент, если он больше, берем 250й, если опять больше - 125й и т.д. Если есть еще скрытые условия, то можно хорошо оптимизировать (например, что числа не повторяются, т.к. в условии "найти число", а не "найти первое число равно К")
    Это не самый оптимальный, но точно оптимальнее твоего в бОльшинстве случаев.

  • @TheQuwel
    @TheQuwel 10 месяцев назад

    "Число семь" и "Семь больше девяти" - гений.

  • @ВикторЕфименко-й1ъ

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

  • @jopaslona1
    @jopaslona1 8 месяцев назад +1

    > нашел рандомную задачу на литкоде
    > не смог полностью пересказать условие чтобы мы поняли
    > ща покажу максимально эффективное решение
    > показывает не эффективное решение
    > сеньор джавист

  • @MrRussianuser
    @MrRussianuser Год назад +4

    В условиях задачи не сказано, что строки и столбцы возрастают, ваше решение некорректное.
    Как раз в Гугле на собесах акцентируют внимание на том, правильно ли ты понял задачу. Еще из этой оперы: найти элемент в дереве. Люди пишут алгоритм поиска по бинарному дереву, так как им дали пример такой, а потом им говорят, что решение некорректно.

  • @TheIgoorR
    @TheIgoorR Год назад

    "Семь больше девяти"
    Поздравляю, вы не прошли в Гугл и Амазон

  • @MrMagno-ni5lf
    @MrMagno-ni5lf Год назад +4

    Используя 2 Бин поиска можно сделать ещё быстрее...

  • @qwertymangames1800
    @qwertymangames1800 3 месяца назад

    Мы просто смотрим на массив и говорим "вот нашёл в середине, видно сразу" и задача решена за константное время 😂

  • @code_craftsman
    @code_craftsman Год назад +11

    Ты написал решение О(N+M), хотя сказал, что требуется написать самое эффективное решение. Бс может дать О(logN+logM). Хотя да, литкод часто дает заслать тупое решение. Эту задачу надо сделать «Напишите алгоритм который за кратчайшее время будет отвечать ДА/НЕТ» и дать матрицу + 10^6 запросов. В таком случае эта задача станет хоть чуть чуть похожа на medium. И твой код жиденько поймает TLE)

  • @mega_mango
    @mega_mango Месяц назад

    Прошу заметить, что алгоритм не обязательно строго оптимален. Его асимптоматика порядка O(n+m). В случае если n ≈ m, это лучший алгоритм, но в случае n

  • @maksymz6695
    @maksymz6695 Год назад +11

    А я чет не понял. Инфы что массив сортирован у нас нет. Почему то что 15 > 9 дает нам возможность отбросить цифры в столбце? Мы же их не проверяли ?!

    • @senior_javist
      @senior_javist  Год назад

      по условию все столбцы и строки идут в порядке возрастания. Если 15>9, значит числа больше 15 проверять смысла нет, их пропускаем.

    • @yungscarecrow758
      @yungscarecrow758 Год назад +9

      ​@@senior_javist надо было это условие озвучить, а то я несколько минут голову ломал, как можно в рандомном массиве сделать это быстрее О(m*n)

    • @Nidvoraich
      @Nidvoraich Год назад

      @@yungscarecrow758 ты не один, бро :)

    • @proKaps
      @proKaps Год назад

      ​@@yungscarecrow758, вот поэтому его и не взяли в Гугл

    • @PavelYakovleff
      @PavelYakovleff 20 дней назад

      А при условии, что строки и столбцы отсортированы, мы отбросили столбцы с 1 и 4, а там вполне могла оказаться 9-ка.

  • @sergeizvol
    @sergeizvol 10 месяцев назад +1

    Ладно😂😂😂 поржали и хватит, а то и 5 будет больше девяти.😅

  • @СавваШишак
    @СавваШишак Год назад +10

    А если загадано число 18?

    • @glasderes
      @glasderes Год назад

      То по масиву ты пойдешь в низ на 19, потом в лево 12 затем в верх 16 и еще раз 17, и еще раз 26, и потом только в лево

    • @ВиталийПо-ю2д
      @ВиталийПо-ю2д Год назад +1

      Тогда пишешь [0][4] и ты на месте. Понял?

  • @didomaik
    @didomaik Год назад +1

    Я думал тут какой-то двумерный бинарный поиск, долго думал, а все оказалось куда проще

    • @ctrlalt2205
      @ctrlalt2205 9 месяцев назад

      Так тут тупорылое решение. Бинарный лучше

    • @ctrlalt2205
      @ctrlalt2205 9 месяцев назад

      Единственная проблема у погромистов в чатике айсикью < 80 и двумерный массив их сбивает с толку сразу

  • @ВечныйСтудент-г9ф
    @ВечныйСтудент-г9ф Год назад +2

    И это нужно решать чтобы просто работать у них грузчиком. Чтобы они говорили, что у них самые умные рабочие .😂

  • @acrrono
    @acrrono Год назад

    «Семь больше девяти»
    Гениальный байт на коммент

  • @АлексейГельвидес-р9ы
    @АлексейГельвидес-р9ы 10 месяцев назад +1

    Вот эти задачи точно придумывают люди, которые никогда не работали в ентерпрайзе, НИКОГДА. Потому что по моим наблюдениям, в массиве может быть вообще что угодно и где угодно.

  • @Life_Expert
    @Life_Expert 9 месяцев назад

    Ахаха, 7 больше 9. Это гениально 😂😂😂

  • @xomyak3030
    @xomyak3030 9 месяцев назад

    После такой лёгкой задачи в гугл возьмут максимум уборщиком😂

  • @daewoog3
    @daewoog3 10 месяцев назад

    Обожаю доморощеных программистов/математиков/физиков и прочих мамкиных инженеров, предлагающих свое репетиторство/менторство..

  • @pastgen9373
    @pastgen9373 Год назад +1

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

  • @artmav2010
    @artmav2010 8 месяцев назад

    У меня аш волосы на письке поседели от таких умных многословесных произношений

  • @GROTUR
    @GROTUR Год назад

    Тем временем я сейчас как Сайтама: «Ок»😂

  • @evilgamer2503
    @evilgamer2503 Год назад

    Двумерный масив "я просто существую", но ход мысли интересный

  • @gemdemmem
    @gemdemmem Год назад +2

    Таким образом можно просто придать цифрам порядковый номер и сделать генератор случайных чисел, а далее удача вам в помощь

  • @Giblotus
    @Giblotus Год назад

    Хочу чтоб автору на каждом собеседовании так же давали задания.

  • @AlexShmaleks
    @AlexShmaleks 11 месяцев назад +2

    В условии не указали то, что числа будут по возрастанию. если вам попалась такая матрица то это совершенно не значит что следующая будет такая же.

  • @АлександрПоволоцкий-л9ю
    @АлександрПоволоцкий-л9ю 10 месяцев назад

    Математика явно ваш не любимый предмет был в школе😂

  • @МаксимКузнецов-ъ1р
    @МаксимКузнецов-ъ1р 9 месяцев назад

    Когда устраивался на должность уборщика

  • @авокадолэнд
    @авокадолэнд 9 месяцев назад

    Ответ: 7 больше 9
    Гугл: вы приняты на должность директора!!!!!

  • @Melior1982
    @Melior1982 Год назад

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

  • @РустамЮсупов-ч9г

    Класс, условие умерло. «Дан двумерный массив», но работать я с ним буду как с АВЛ деревом. Однозначно лайк !

  • @archibald3544
    @archibald3544 Год назад

    Бинарный поиск курит в сторонке

  • @quandkage
    @quandkage Месяц назад

    Кратко: Бинарный поиск для матрицы

  • @СергійМиколайович-е5р
    @СергійМиколайович-е5р 3 месяца назад

    Думаю почему до сих пор не могу пройти собеседование ни в одну компанию. Вот она загвоздка: семь больше девяти. А я себе мозг сломал😮😅😂

  • @Горгулья666
    @Горгулья666 9 месяцев назад

    После труу😂 я не стала понимать ничего😂😂😂

  • @blacklight1456
    @blacklight1456 8 месяцев назад +1

    Это кстати на trainee собеседование. После этого задания просят с нуля написать дистрибутив linux чтобы был лучше Kali и удобнее Ubuntu

  • @TypeGuest
    @TypeGuest Год назад

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

  • @MacMan2152
    @MacMan2152 10 месяцев назад

    То, что числа расположены в порядке возрастания, не было сказано в правилах, а было представлено как "наблюдение": "обратите внимание". Если этого нет в правилах, то решение будет захардкоденным куском кала, заточенным под одну конкретную таблицу, а не под любую такую таблицу

    • @fbiflow7949
      @fbiflow7949 10 месяцев назад

      Так это решение и заточено конкретно под этот массив, достаточно на код взглянуть чтобы это понять 😅

  • @alexblack43
    @alexblack43 Год назад

    А теперь докажи, что это решение максимально эффективное.

  • @СергейТкачев-е6э
    @СергейТкачев-е6э Год назад +1

    Это на каком этапе собеседований спрашивают? Это точно в Google собеседование, а не в Gooqle?)

  • @valik-stu
    @valik-stu 7 месяцев назад

    Видел эту задачу при устройстве в NASA, но мне повезло, что такая же задача была, когда я работал в Майкрософт

  • @Карабас92
    @Карабас92 2 месяца назад

    Семь больше девяти, понятно, понятно 😂

  • @lenovoe4303
    @lenovoe4303 10 месяцев назад +1

    К алгоритм нужно добавить
    if (масив == не удобный) {
    print("Х..ли ты мне впариваешь не отсортированый масив?")

  • @ГлебКуделькин-л9ц
    @ГлебКуделькин-л9ц 11 месяцев назад

    Это задача уровня 8 класса школы с нормальной информатикой, я её щас успел решить до того, как ты сказал про диагональ

  • @serega_goth
    @serega_goth 10 месяцев назад

    7 больше 9😂😂😂.
    не мог не обратить внимание на данную ошибку, и не посмеяться.

  • @yourbigfan1777
    @yourbigfan1777 Год назад

    Легко, когда объясняют. А так бы я стал шарить через весь матрикс

  • @Akasa_Lust
    @Akasa_Lust Год назад +1

    Сначала ищем столбец, потом строку, пользуясь информацией о сортировке.
    Только вот искать их тоже можно эффективнее.
    Да и решение явно подразумевает использование указателя.

  • @Пистолет_В_эфире
    @Пистолет_В_эфире 10 месяцев назад

    Красавчик. Ум это важно

  • @Sapport226
    @Sapport226 Год назад +1

    "7 больше 9" Ыыыы

  • @ПриветМэдвэт
    @ПриветМэдвэт 2 месяца назад

    Гугл отбирает себе не обычных наборщиков кода, которых и так предостаточно, а мозги, которые могут создавать алгоритмы. И это правильно.

  • @plopatenok
    @plopatenok 10 месяцев назад

    7 больше 9ти, расходимся.

  • @lorellomirarilier8789
    @lorellomirarilier8789 Год назад +2

    Логичнее с 30 начать, попутно идя к самому меньшему числу среди соседних:
    Около 30 меньшее-24
    Около 24-17
    Около 17-14
    Около 14-9

  • @NarberalKa
    @NarberalKa 10 месяцев назад

    Заставило меня напрягать мозг, конечно я тоже могу выдумать условия решения и решить задачу зная пару команд😮

  • @saitamafan666
    @saitamafan666 10 дней назад

    7 больше 9? Я же не один это услышал?😂

  • @SashaGun_GD
    @SashaGun_GD 10 месяцев назад

    Самое эффективное решение: начать с центра

  • @serhiisinilov
    @serhiisinilov 8 месяцев назад

    только вопрос. Какой смысл начинать справа, если всё то же самое будет и если начинать слева? только смотреться будет более складно и логично.

  • @van_hotring
    @van_hotring Год назад

    Я нашёл с помощью зрения и сразу)

  • @uvash4611
    @uvash4611 Год назад +2

    Если в матрице все числа от 1 до n x m то можно записать её как одномерный массив, после чего вызвать алгоритм частичной сортировки (ставит 1 элемент на место), на то место где ожидается число.

    • @ubiwan7936
      @ubiwan7936 Год назад

      Этот алгоритм должен хотябы раз обратиться к каждому элементу, тогда у тебя получается O(M*N), что по асимптотике не лучше, чем просто поиск по каждому элементу, а у алгоритма из решения скорость O(M+N)

  • @luckyfox8109
    @luckyfox8109 10 месяцев назад

    самый эффективный вариант это пройтись по всем элементам 'матрицы', а не придумывать велосипед

  • @ОлегАн-т5ж
    @ОлегАн-т5ж Год назад

    Есть ещё быстрее код, если мы знаем что матрица отсортирована, в матрице 25-ть чисел. Мы берем начальную (допустим она 10) , берём последнюю (допустим она 80), нам надо найти 30. Усредненный коефициент распределения чисел по матрице это (80-10)/25 = 2.8. Потом (30-10)/2.8 = 7.1 т. е стартовать надо с 7 клетки.
    При большом количестве таких матриц изначально стартовать с усредненно ближайшей ячейки будет выгодно по производительности. Особенно при больших матрицах.

  • @nop99999
    @nop99999 Год назад +1

    я так понял что там я могу работать только уборщиком сейчас

  • @Arrrr-gj6kk
    @Arrrr-gj6kk 6 месяцев назад +1

    Это же частный случай, такое на практике никогда не встретится, зачем проверяют такую глупость?

    • @СерхиоБускетс-ф7я
      @СерхиоБускетс-ф7я 6 месяцев назад +1

      Лучше другое скажите. Я вот маме постоянно кеш телефона чищу от просмотренных видео в ватсапе. Внимание, там не только нет ограничения, но и виде сохраняются целиком в память, а еще делается дублирование походу если кто-то отослал другому или типа того. Т.е. у вас может быть хоть 100 видео одинаковых, которые забивают память. Теперь вопрос, вы правильно спросили, про частный случай, нахрена там вообще алгоритмы на собесе, если в подобных конторах пишут инвалиды код?

    • @Arrrr-gj6kk
      @Arrrr-gj6kk 5 месяцев назад +1

      @@СерхиоБускетс-ф7я Очевидно, потому что проверяют такую дурь, вот они они и набирают тех, кто только такую даль писать и умеет, а не реальные юзкейсы.

  • @1GZMO
    @1GZMO Год назад +3

    Собеседование это форма унижения, если ты спец, то тебя берут полюбому

  • @Viarety
    @Viarety 8 месяцев назад

    "Давайте решим задачу" желание: 📉📉📉, "которую даут нв собеседовании в гугл" желание: 📈📈📈📈

  • @fantik86
    @fantik86 6 месяцев назад +1

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

  • @vigonskiy
    @vigonskiy Год назад

    Ну если 7 больше 9 то здесь наши полномочия все, думал сова😂. Дорога в гугл открыта