Dynamic Programming Knapsack (как использовать, понимать, применять, dp трюки и оптимизации)

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 พ.ย. 2024

ความคิดเห็น • 23

  • @42px
    @42px 13 วันที่ผ่านมา

    Балдежный ролик, про cache line интересно

  • @ДмитрийС-м5м
    @ДмитрийС-м5м 4 หลายเดือนก่อน +11

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

    • @alexPCking
      @alexPCking 4 หลายเดือนก่อน +8

      @@serhii_devпотому что долго, никто не хочет разбираться ни в чем. все хотят через ролики по 5 -10 минут стать экспертами)

    • @koduryem
      @koduryem  4 หลายเดือนก่อน +1

      спасибо большое)

  • @klyuk88
    @klyuk88 2 หลายเดือนก่อน

    Огромный респект за контент! 🤝

  • @helena_stokes
    @helena_stokes 4 หลายเดือนก่อน

    Огромное спасибо, очень полезное видео 💜

  • @CadCabade
    @CadCabade 2 หลายเดือนก่อน +4

    Хорошему видео таймкоды не помешают
    00:00 Введение
    5:56 Объяснение Knapsack
    14:17 Рекурсия: Идея
    29:42 Рекурсия: Leap of Faith
    38:55 Best Time to Buy and Sell Stock (рекурсивный подход Top-Down)
    1:05:25 Итеративный подход Bottom-Up
    1:16:23 Оптимизация 1 по памяти (Space Optimization)
    1:25:14 Оптимизация 2
    1:29:42 Оптимизация 3
    1:32:50 Дальнейшие оптимизации
    1:38:28 Выводы по Задаче 1
    1:46:30 Best Time to Buy and Sell Stock 2
    1:55:12 Best Time to Buy and Sell Stock 3
    2:04:35 Best Time to Buy and Sell Stock 4
    2:07:00 Best Time to Buy and Sell Stock With Cooldown
    2:10:20 Maximum Subarray
    2:22:02 Maximum Subarray - Решение 2
    2:26:23 Maximum Subarray - Решение 3
    2:30:30 Maximum Subarray - Решение 4
    2:37:38 Предложение о коллективности

    • @chu_ri5470
      @chu_ri5470 หลายเดือนก่อน

      2:10:20
      К слову, самое красивое решение это именной Kadane's Algorithm. Потребуется константа по памяти.
      При желании его можно вывести из последнего решения в видео. Такой приём часто работает.

  • @heybeachMIN
    @heybeachMIN หลายเดือนก่อน

    Блин, решение(1 задачи) с рекурсией оч сложно понять, было бы круто, если бы ты в кратце как-нить дерево стэка вызовов на каком-нибудь примере ещё рисовал, чтоб более наглядней было. Типа, я смотрел видео про рекурсию(наверно, ещё раз пересмотрю), но всё равно чёт сложно. С решениями где используются матрицы/массивы уже понятнее.

    • @koduryem
      @koduryem  หลายเดือนก่อน +2

      Дерево стека вызовов не масштабируемо для решения других задач. Поэтому смысла нет особо. Нужно сменить мышление на рекурсивное/декларативное

    • @heybeachMIN
      @heybeachMIN หลายเดือนก่อน

      @@koduryem Да, я уже разобрался, я там затупил и не понял, что за taken)))

    • @heybeachMIN
      @heybeachMIN หลายเดือนก่อน

      @@koduryem А, кст, вопрос хотел задать, планируешь ли ещё видео про алгоритмы снимать? Там, например, разбор каких-то ещё задач либо может быть про паттерны опять.

  • @ЕкатеринаКригер-ы9в
    @ЕкатеринаКригер-ы9в หลายเดือนก่อน

    пока идёт объяснение слова - всё понимаю
    как доходит до кода - НОЛЬ
    просто ноль
    у меня вообще объяснение не укладывается в понимание кода ((((

    • @koduryem
      @koduryem  หลายเดือนก่อน +1

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

  • @Дмитрий-э7ъ9ч
    @Дмитрий-э7ъ9ч 4 หลายเดือนก่อน +1

    Спасибо. Вы очень интересно рассказываете, но очень долго. Несколько раз повторяете одно и то же.

    • @AlexeyPolyakov-c2n
      @AlexeyPolyakov-c2n 4 หลายเดือนก่อน

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

    • @CadCabade
      @CadCabade 3 หลายเดือนก่อน

      Повторение помогает пониманию и закреплению. Это хорошая практика наоборот.

  • @Teacification
    @Teacification 4 หลายเดือนก่อน

    20 минут видео, а к решению не приступали, как такое смотреть ? Пытаюсь осознать, что за эти 20 минут посмотрел, но ни чего вспомнить не могу, как так ?

    • @koduryem
      @koduryem  4 หลายเดือนก่อน +2

      Нужно тренировать короткую память, если она слабая. Запоминать и быть внимательнее. Пробуй останавливаться и проверять понял ли ты или просто просмотрел. В таких темах это работать не будет, это не "бери так делай". Делай что-то вроде рефлексии - понял, что просмотрел какие-то ключевые моменты - останови и вспомни, что там было, про что, почему и как. Потом дальше. Ты должен в такие паузы уметь ответить "да, идея вот такая была, надо пытаться так-то делать, стремиться к тому-то тому-то", возможно без прямо подробностей, все помнить не нужно.
      Тема сама по себе сложная, поэтому не расстраивайся. Попробуй просмотреть ролик по рекурсии и все, что с ней связано (у меня ранее был). Тут немножко нужно сменить мышление с итеративного.

    • @MrSanya789
      @MrSanya789 4 หลายเดือนก่อน +1

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

    • @koduryem
      @koduryem  4 หลายเดือนก่อน +2

      Попробуй посмотреть еще комменты под видео "Как решать алгоритмы на Leetcode Часть 2", там CadCabade задавал вопросы и мы поговорили немного.

    • @CadCabade
      @CadCabade 3 หลายเดือนก่อน +1

      А вот и упомянутый выше CadCabade :)
      Как человек с похожей проблемой, не могу посоветовать задумываться каждые несколько минут, что ты сейчас услышал, и пытаться сразу отрефлексировать. Предлагаю тебе попробовать еще такой подход, когда смотришь подобные видео.
      Пока смотришь, набрасываешь на листок самые общие фразы. Обычно, рассказчик, если он такой же хороший, как автор, отдельно их выделяет и подчеркивает, на слайдах или словами. Затем дожидаешься наконец момента, когда рассказчик приступает к решению и решаешь вместе с ним, тут у тебя уже по идее такой проблемы не будет, так как мозгу твоему на практической части проще будет следить за видео. Прорешиваешь кое-как, не обязательно идеально прям прорешать, но главное, чтобы ты понял суть. Возможно прорешиваешь всё и доходишь до конца видео. Но в конце у тебя 100% останутся разные вопросы и дыры, которые ты не смог закрыть.
      И вот тут-то ты начинаешь смотреть видео заново, можно на 1.5 скорости. И теперь для тебя то, что рассказчик объясняет в начале начнёт иметь смысл и ты начнёшь понимать, про что он вообще говорит и до тебя начнёт доходить.
      Ответ автора тоже подходит, но к сожалению не всем типам изучающих. Я вот так, как он описал, не могу, я изучаю через практику и боль ошибок, а потом только дополняю теорией.

    • @heybeachMIN
      @heybeachMIN หลายเดือนก่อน +1

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