Публикации по теме 'dynamic-programming'


Литкод 518: Размен монет II
Заметки по алгоритму для меня и всех. Прежде всего, эта заметка предназначена для того, чтобы отпраздновать получение моей женой статьи от Cancer Discovery 🎉. А ещё у её младшего брата день рождения🎂, лол. Так что сегодня совершенно особенный🤗. Итак, давайте посмотрим на # 518.

Основы динамического программирования — Часть 2
Основы динамического программирования — Табулирование Есть два метода решения проблемы с помощью динамического программирования. В этом посте мы увидим метод табуляции. Пожалуйста, обратитесь к моим основам динамического программирования — часть 1 для метода мемоизации. Мемоизация Табулирование Что такое динамическое программирование? Это метод оптимизации по сравнению с простой рекурсией. Это значительно сокращает время, необходимое для решения проблемы для данного ввода...

День 1: Литкод | 121. Лучшее время для покупки и продажи акций
Difficulty: Easy Language: JavaScript описание проблемы Вы задали массив цен, где цены[i] — это цена данной акции на i-й день. Вы хотите максимизировать свою прибыль, выбрав один день для покупки одной акции и выбрав другой день в будущем для продажи этой акции. Верните максимальную прибыль, которую вы можете получить от этой сделки. Если вы не можете получить никакой прибыли, верните 0. Объяснение 1: Купить во второй день (цена = 1) и продать в пятый день (цена = 6),..

Минимальные затраты на достижение вершины
Вот еще одна проблема из области динамического программирования, которую много раз задавали в интервью с небольшими вариациями. Постановка задачи довольно проста. У вас есть лестница с n ступенями. У каждого шага есть своя стоимость, вы можете подняться на 1 или 2 шага за раз с любого шага. Единственным ограничением является то, что когда вы переходите с шага, вы должны оплатить стоимость, связанную с этим шагом. Например, вы находитесь на 5-й ступени лестницы, и стоимость 5-й ступени..

LeetCode — арифметические срезы
Последовательность чисел называется арифметической, если она состоит не менее чем из трех элементов и если разница между любыми двумя последовательными элементами одинакова. Например, это арифметическая последовательность: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 Следующая последовательность не является арифметической. 1, 1, 2, 5, 7 Дан массив A с нулевым индексом, состоящий из N чисел. Срез этого массива — это любая пара целых чисел (P, Q), такая что 0 ‹= P ‹ Q ‹ N. Срез (P, Q)..

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

Динамическое программирование, часть 2: Преобразование повторения в восходящую программу
В этой статье объясняется, как рекуррентное соотношение 0/1 Knapsack можно преобразовать в код динамического программирования сверху вниз. Если вы хотите понять, как мы пришли к представленному ниже рекуррентному соотношению, пожалуйста, прочитайте статью Выявление и подход к проблеме динамического программирования . Чтобы написать код для любого рекурсивного отношения, мы должны сначала определить базовое условие. Лучший способ сделать это — подумать о наименьшей возможной..