И это задача на 150 000$ ?! Я прошел собес в Amazon

Поделиться
HTML-код
  • Опубликовано: 19 дек 2023
  • Переходи по ссылке и начни разбираться в алгосах уже сейчас: www.faang.school/algorithms-f...
    Друзья! Решил поделиться задачей, которая мне попалась на самом настоящем собесе в Amazon, а точнее ее детальным решением!
    Кто бы мог подумать, что одна из самых популярных задач на LeetCode будет на алгоритмическом собеседовании на позицию Senior Software Engineer c зарплатой в 150.000$ в год!
    В видео рассказал и показал каждый шаг своих действий! Приятного просмотра!
    Ссылка на мой ТГ-канал: t.me/+9fKb_X2Wixw4ODAy
    Обучение:
    Java Буткемп: www.faang.school/?...
    Курс "Алгоритмы с нуля": www.faang.school/algorithms-f...
    Курс "Подготовка к собеседованию в IT": www.faang.school/product-inte...
    Java Magics. Бесплатный курс для начинающих: www.faang.school/java-magics?...
    Социальные сети:
    Instagram: / faang.school
    LinkedIn: / vlad-mishustin
    ТГ-канал "Road to FAANG": t.me/fakng_eng
    ТГ-сообщество FAANG School - t.me/+fgoLmBk0B1EyODk0
    ДИСКЛЕЙМЕР
    Любая информация, высказанная в данном видео является моим личным мнением и никак не относится и не отражает позиции моего работодателя или любых связанных со мной организаций.
    Любой код, документация, логи или диаграммы, показанные в видео, являются моими личными макетами, написанными/созданными в мое свободное время на своей собственной машине, конкретно для демонстрации в роликах, никак не относясь и не используя интеллектуальную собственность моего работодателя или любых связанных со мной организаций.

Комментарии • 55

  • @halcyon-s
    @halcyon-s 4 месяца назад +2

    Влад, спасибо за видео, очень интересный формат, хотелось бы побольше такого контента с разбором задач

  • @asbringer1027
    @asbringer1027 4 месяца назад

    Спасибо за разбор задачи , очень интересно и познавательно. Хотелось, чтобы еще больше было подобных выпусков)

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

    Видос топовый, так и продолжай❤😊

  • @pavlovn
    @pavlovn 4 месяца назад +11

    Блестящий разбор задачи! Спасибо большое, Влад, ценю все твои видео, ты молодец!

  • @user-cy4og8jn8w
    @user-cy4og8jn8w 4 месяца назад

    Супер разбор, четко и понятно. Спасибо)

  • @user-zz2ho4jl7g
    @user-zz2ho4jl7g 4 месяца назад

    Влад, спасибо большое, такие разборы очень помогают! А сможешь в одном из следующих видео разобрать многопоточность? Думаю это может быть многим полезно

  • @Apologet_2
    @Apologet_2 4 месяца назад

    Продолжай в том же духе. Такое интересно

  • @Roy-hp9nm
    @Roy-hp9nm 4 месяца назад

    Привет. Спасибо за видео. 5 месяцев назад вышло видео на канале про собеседование в амазон и оно совершенно противоречит этому. На этот раз тоже были все эти 5 собеседований подряд или условия отбора изменились?

  • @quansumonner
    @quansumonner 4 месяца назад

    Доброго времени суток! Извените, Я бы хотел узнать ваше мнение.
    Как вы относитесь к накрутки опыта в разработке?
    Если другие варианты?
    У меня сейчас 2 резюме и единственное, что в них различается, это количество опыта, но на одном 2 отлика (о опыта), а на другом 27 (1.7 опыта)

  • @felixvoid5521
    @felixvoid5521 4 месяца назад

    Крутяк, спасибо

  • @dd-lb5wq
    @dd-lb5wq 4 месяца назад +1

    Придумал решенин за О(nlogn)
    1. Бежим по элементам массива, но не по порядку, а по возрастанию высоты столбцов
    2. Тогда для текущей высоты мы точно знаем высоту контейнера (она равна текущему элементу, так как бежим по возрастагию, значит, высот меньше просто нет, а предыдущие уже не учитываем)
    3. Раз для любого второго слобца высота контейнера будет одинакова, то для максимизации площади нужно выбрать самый дальний столбец (высота не важна)
    4. Создаем массив visited, заполненный нулями (если посетили i-ый стробеу, то visited[i] = 1), и два указателя - на первый и последний элемент (это максималтно близкие непосещенные стробцы к левой и правой стороне)
    5. Если посещенный столбец совпал с указателем, то двигаем его вправо (если он левый) и влево (если он правый) до тех пор, пока visited[i] не будет равен 0
    6. Пробегаясь по всем столбцам в порядке возрастания их высот, мы можем находить наибольшую площадь контейнера, используя указатели
    Да, решение не за O(n) и память не О(1), но вот такое решение придумал)

  • @differentone_p
    @differentone_p 4 месяца назад +1

    вот это ты даёшь конечно

  • @HonJony-tv9rh
    @HonJony-tv9rh 4 месяца назад

    Привет , круто , молодец

  • @user-fw2jj9ck4y
    @user-fw2jj9ck4y 4 месяца назад +1

    Привет! На каком уровне изучения Java нужно учить алгоритмы? Я понимаю, что достаточно иметь базовые знания, но если так, чтобы двигаться по road map какой-то?

    • @DenDamien
      @DenDamien 4 месяца назад

      Все инфо цыгане как раз говорят что чтобы получить road map нужно пойти к ним на курсы, иначе растратишь время на изучение не нужных технологий, так что видимо бесплатно этой информации не планируется (так как это снизит смысл идти на курсы)..

  • @ethrealroma
    @ethrealroma 4 месяца назад

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

    • @pycz
      @pycz 4 месяца назад +1

      Я не понял. В решении и так первый указатель идёт от начала, а второй от конца.

  • @user-bb2tv1is6k
    @user-bb2tv1is6k 4 месяца назад +3

    Я думаю в будущем ты станешь очень важной личностью если будешь так же продолжать!

    • @BBDragon09
      @BBDragon09 4 месяца назад +1

      Лол, Влад уже стал локомотивом индустрии и ютуба😊

  • @proninkoystia3829
    @proninkoystia3829 6 дней назад

    Думаю если дано n столбов высоты h(i) i=1, 2,..., n, то для каждого такого столба соответствует n-1 длина l. Я думаю построить матрицу nxn где в первой строке будут записаны высоты, а в нижних строках будут записаны длины для каждой из высот. Н -р, в первом столбике на первой строчке высота h(1) а под ней в остальных n-1 строках соответствующие ей длины. Так вот, берем под каждой высотой максимальную длину, перемеожаем каждую из полученных длин со своей высотой, получаем список состоящий из значений площадей, находим максимум этого списка. Но я не знаю насколько верно это решение🤔

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

    Если в первой итерации допустим мы получили самое большое значение "max", после других итерации значение в "max" не испортится?

  • @iswmq420
    @iswmq420 4 месяца назад

    решал год назад, но все равно было интересно)

  • @mercurana
    @mercurana 2 месяца назад

    Интересуюсь для себя, чтобы быть в теме(сын программист, хочется быть осознанной в беседе). Решила задачу с ходу. Теперь думаю, а точно ли врач - это моё 😂

  • @user-ib7vx3yc4i
    @user-ib7vx3yc4i 3 месяца назад

    Супер

  • @strapochek798
    @strapochek798 4 месяца назад

    Можете подсказать, почему у второго алгоритма сложность O(n), насколько я понимаю в нем сложность определяется наилучшим сценарием, верно?

    • @felixvoid5521
      @felixvoid5521 4 месяца назад

      я так понимаю, потому что мы проходимся по элементам один раз, если два раза, то n*n. Если три раза, то N*N*N. Чем больше итераций, тем сложнее.

    • @RustamPlayer
      @RustamPlayer 4 месяца назад

      @@felixvoid5521 Если мы проходимся по массиву несколько раз, это не всегда квадратичная сложность. Например, в первый раз собрали префикс суммы, второй раз прошлись, сделали с ними что нибудь. То такая сложность будет O(n+n) -> O(2n) но не O(n^2).
      Для квадратичной сложности нужно для каждого элемента в массиве, проходится по массиву снова. Это можно выразить как O(n1+n2+n3 ... n n-1+ n n).

    • @qalisander9290
      @qalisander9290 4 месяца назад

      @@felixvoid5521 Сложность алгоритмов нужна, чтобы ответить на вопрос, как измениться время программы/запроса если кол-во данных увеличиться в неск. раз. К примеру в 2 раза. Если в вашем алгоритме "двойного/тройного прохода по массиву" элементов стало вдвое больше. То вам придется сделать просто вдвое больше операций, что займет вдвое больше времени. Т.е линейная зависимость O(n). Если новое время исполнения будет в 4 (= 2^2) раза больше прежнего, то сложность квадратичная O(n^2). Те со сложностью легко понять как будет масштабироваться алгоритм / система / микросервисы на выросшее кол-во входных данных / запросов / пользователей

  • @jornojavanna
    @jornojavanna 4 месяца назад

    Как отключить субтитры

  • @TheSaddon
    @TheSaddon 4 месяца назад

    Имеет ли смысл проходит до конца, пока два указателя встретятся? Если мы знаем что максимальная высота стенки 8, а максимальная площадь 49, то если расстояние между двумя указателями будет меньше 7 (7*8 дадут нам новое максимальное значение) то процесс можно останавливать.

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

      а программа как будет знать что 8 это максимальная высота стенки?

    • @TheSaddon
      @TheSaddon 4 месяца назад

      @@hankie5 встроенные функции языка max() я так понимаю использовать нельзя?

    • @pycz
      @pycz 4 месяца назад

      Можно, но это сразу один полный проход по неупорядоченному массиву, О(n). Ну и по большому счету он не даст дополнительной информации, так как все равно в ходе выполнения предлагаемого алгоритма этот проход по всем элементам будет сделан, получим только лишний проход

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

    Одна из самых легких задач на литкоде. Не может быть чтоб ее давали даже мидлам

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

    Старнно, что задача уровня medium. Объяснение хорошее, но так дотошно рассатривать такую незамысловатую задачу думаю смысла нет, складывается ощущение, что ребенку объясняешь.

  • @maxtrue218
    @maxtrue218 4 месяца назад

    Эти задачи ведь Chat-GPT скоро сможет решать, нет?

  • @vovivi8073
    @vovivi8073 4 месяца назад

    Все равное не понимаю, сужая стрелки, вы же не проверите расстояние между 3 и 9,...как будто вообще игнорируем некоторые расстояния, мне кажется в тесте этот метод не выдержит, при больших массивах

  • @Ani99369
    @Ani99369 4 месяца назад

  • @user-pq5sd4bz4e
    @user-pq5sd4bz4e 3 дня назад

    решил за 2 минуты )))

  • @romandeveloper7720
    @romandeveloper7720 4 месяца назад

    всё амазон не отпустит Влада никак)

  • @WeekendDeveloper-es3fp
    @WeekendDeveloper-es3fp 4 месяца назад

    Простая задача, сходу решил

    • @Dmitry__Ershov
      @Dmitry__Ershov 4 месяца назад

      Ты уже работаешь в faang?

    • @WeekendDeveloper-es3fp
      @WeekendDeveloper-es3fp 4 месяца назад

      @@Dmitry__Ershov нет, да и не планировал пока

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

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

  • @spacecookies6814
    @spacecookies6814 4 месяца назад +1

    Минус за кликбейт

  • @ivbro3117
    @ivbro3117 4 месяца назад

    Вот вот 100 тысач....

    • @ikspb
      @ikspb 4 месяца назад

      99.9 сейчас😁

    • @youcool719
      @youcool719 4 месяца назад

      Уже

  • @AitCollini
    @AitCollini 4 месяца назад

    Если прям совсем точно то у первого алгоритма скорее n! (факториал) вариантов, так как с каждым шагов второй итератор проходит на 1 меньше

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

      Точно не n!.
      Первый итератор проходит n шагов. Второй - на первой итерации n-1, на второй - n-2, ... на n-ой итерации - 0 шагов. По сути проходов n (первый итератор) + 1 + 2 + 3 + ... + n-1 = n + сумма арифметической прогрессии от 1 до n-1 = n + (n-1)(n-2)/2 => O(n^2/2 + остальные менее значимые части многочлена) => опускаем множитель и младшие члены многочлена => O(n^2)

  • @user-tj5vu2fj4z
    @user-tj5vu2fj4z 4 месяца назад

    Ттт

  • @user-tn1eu1fr3r
    @user-tn1eu1fr3r 4 месяца назад

    0

  • @pyanyj
    @pyanyj 4 месяца назад

    И тут я понял, что программистом я быть не хочу😂

  • @Zerefor
    @Zerefor 4 месяца назад +1

    00:00 - услышал голос. Вырубил видео. Кринж.

    • @user-tf8qi2ff9z
      @user-tf8qi2ff9z 4 месяца назад

      О нет, только не это, прошу...