64. Minimum Path Sum

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,

  1. For the first row, you can only move from left to right
  2. For the first column, you can only move from top to bottom
  3. 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:


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值