64. Minimum Path Sum
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
Example:
Input:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
Output: 7
Explanation: Because the path 1→3→1→1→1 minimizes the sum.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Think and method:
As you can see from the title, this is a very typical dynamic programming problem, and unless you keep the violent idea of listing all possible maxima, we should approach it from the perspective of dynamic programming.
Specifically, since the starting point is determined to be the upper left corner, we only need to consider right and right in both the row and column directions. Since there is no possibility of diagonal movement, it makes no sense to consider whether we need to move left or up in the middle process, which will only make the path longer.
So let’s think about three states,
- For the first row, you can only move from left to right
- For the first column, you can only move from top to bottom
- For other columns and columns, the minimum path sum is equal to the minimum value in the minimum path sum corresponding to the adjacent element above it and its neighboring element on the left plus the current element value.This naturally includes the idea of dynamic programming.
Therefore, we only need to create a two-dimensional array with the same size as the original grid, and then calculate the above three states respectively, as shown below. The last grid result [length-1][Columns] is the minimum path and we need.
result [0][0] = grid [0][0]
1 line : i > 0 & j = 0
result [i][0] = result [i-1][0] + grid[i][0]
2 column: i = 0 & j > 0
result [0][j] = result [0][j-1] + grid[0][j]
3 both line and column
i>0 & j > 0
result [i][j] = min(result [i-1][j] , result [i][j-1] )+grid[i][j]
Time complexity: O(mn) m is the number of the line; n is the number of column
Space complexity:O(mn)
Code: