Рубрики
Без рубрики

Решайте Проблемы С Leetcode и Получайте Предложения От Компаний Вашей Мечты || Минимальная Сумма Пути

Проблема с кодовым кодом 64: Минимальная сумма пути В этой серии я собираюсь решить проблему Leetcode medium… С тегами “алгоритмы”, “программирование”, “java”.

Проблема с кодовым кодом 64: Минимальная сумма пути

В этой серии я собираюсь решать проблемы Leetcode medium в прямом эфире со своими друзьями, которые вы можете увидеть на нашем канале YouTube. Сегодня мы займемся проблемой Leetcode: 64. Минимальная Сумма Пути

Немного обо мне, у меня есть предложения от Uber Индия и Amazon Индия в прошлом, и в настоящее время я работаю на Booking.com в Амстердаме.

Мотивация к изучению алгоритмов

Решайте Проблемы С Leetcode и Получайте Предложения От Компаний Вашей Мечты

Постановка задачи

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

Примечание: Вы можете перемещаться только вниз или вправо в любой момент времени

Пример 1:

Input: grid = [[1,3,1],[1,5,1],[4,2,1]]
Output: 7
Explanation: Because the path 1 → 3 → 1 → 1 → 1 minimizes the sum.

Пример 2:

Input: grid = [[1,2,3],[4,5,6]]
Output: 12

Ограничения:

  • м.длина

  • n[i].длина

  • 1, n

  • 0[i][j]

Обсуждение на Youtube

Решение

Подход 1: Грубая сила

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

стоимость(i,[i][j] + min(стоимость(i+1, j), стоимость(i, j+1))

Следующий код реализует этот алгоритм:

Решение на C++

Java-решение

Анализ сложности

Временная сложность равна O(2^(m+n))

Временная сложность равна O(m+n)

Мы можем решить эту проблему за O (n * m) временной сложности.

Идея состоит в том, чтобы вычислить, для каждого индекса (i, j) найти минимальный путь от верхнего левого края до индекса (i, j).

Случаи первой строки и столбца

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

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

Любой другой случай

Теперь, чтобы достичь индекса (i, j), у нас есть два варианта

  1. мы достигаем от индекса (i-1,j)

  2. или мы достигаем из индекса (i, j-1)

Мы выберем минимальный из этих двух индексов. Если мы применим ту же интуицию к остальной части сетки, мы найдем minpathsum сверху слева направо снизу.

Решение на C++

Java-решение

Анализ сложности

Временная сложность равна O(n*m)

Сложность пространства равна O(1)

Благодарим Вас за чтение и следите за этой публикацией, чтобы узнать больше о проблемах с LeetCode! 😃

Упрощенный код LeetCode

Оригинал: “https://dev.to/nilmadhabmondal/solve-leetcode-problems-and-get-offers-from-your-dream-companies-minimum-path-sum-1g5j”