class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int row=grid.size();
int col=grid[].size();
int N=;
int D[N][N];
D[][]=grid[][];
for(int j=;j<col;j++){
D[][j]=D[][j-]+grid[][j];
}
for(int i=;i<row;i++){
D[i][]=D[i-][]+grid[i][];
}
for(int i=;i<row;i++){
for(int j=;j<col;j++){
D[i][j]=min(D[i][j-],D[i-][j])+grid[i][j];
}
}
return D[row-][col-];
}
};

补充一个python版本:

 class Solution:
def minPathSum(self, grid: 'List[List[int]]') -> 'int':
m = len(grid)
n = len(grid[0])
dp =[[0 for col in range(n)] for row in range(m)]
dp[0][0] = grid[0][0]
for i in range(1,m):
dp[i][0] = dp[i-1][0] + grid[i][0] for j in range(1,n):
dp[0][j] = dp[0][j-1] + grid[0][j] for i in range(1,m):
for j in range(1,n):
dp[i][j] = min(dp[i][j-1],dp[i-1][j]) + grid[i][j]
return dp[m-1][n-1]

dp是二维数组,每一个元素表示:从起点[0][0]开始,到当前单元格,最小的路径长度。

由于只能向“右”和“下”移动,而且没有负的权值。

因此,

第一行只能按照从左到右顺序,才能获得最小。

第一列,只能按照从上到下顺序,才能获得最小。

而其他单元格,可能有两种策略:

策略1:从上面过来;

策略2:从左面过来。

两种策略的选择依据是,“上面”与“左面”两者较小的,这个较小的值 + 当前元素值,即为dp值。

最终返回dp[m-1][n-1],即是到右下角单元格,最小路径和。

leetcode64的更多相关文章

  1. 58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)

    1. 数组去重 题目描述 /** * 有序数组去重 * 输出最终的数字个数 * 输入:1,2,2 * 输出:2 * @author Turing * */ 代码 import java.util.*; ...

  2. [Swift]LeetCode64. 最小路径和 | Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  3. leetcode64. Minimum Path Sum

    这个题是从左上角到右下角的路径和最小,实际就是一道dp题. 第一种写法是只初始化(0,0)位置,第二种写法则是把第一行.第一列都初始化了.个人更喜欢第二种写法,简单一点. dp的右下角的值就为最终的值 ...

  4. leetcode-64. 最小路径和 · vector + DP

    题面 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right wh ...

  5. Leetcode64.Minimum Path Sum最小路径和

    给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [   [1,3,1], [1,5,1] ...

  6. LeetCode64. 最小路径和

    这题和62题以及63题类似,只不过dp数组的状态表示变了,这里dp数组不再表示方案数,而是到当前格子的最小路径和.可以发现:要到达第i行第j列的格子,只有从第i - 1行第j列的格子或第i行第j - ...

  7. leetcode64:maximal-rectangle

    题目描述 给出一个只包含0和1的二维矩阵,找出最大的全部元素都是1的长方形区域,返回该区域的面积. Given a 2D binary matrix filled with 0's and 1's, ...

随机推荐

  1. ios 中pickerView用法之国旗选择

    QRViewController控制器 // // QRViewController.m // #import "QRViewController.h" #import " ...

  2. 使用Sublime Text 3进行Markdown 编辑+实时预览

    这种做法可能会对你的磁盘IO造成一小部分性能负担,但负面影响足以忽略. 另外,由于这种频率的读写会被磁盘缓存接管,不必担心磁盘寿命的影响. 对于刚安装好的Sublime Text,我们需要安装一个软件 ...

  3. 05_解决mac百度网盘下载速度慢问题

    第一步:下载软件 下载工具包:aria2GUI和chrom插件 链接:https://pan.baidu.com/s/104t6aZXx9zfxBV9rS_eLfg  密码:yg96 ①下载Aria2 ...

  4. Python pip源更改

    将pip源设置为阿里源 windows 打开文件资源管理器(文件夹地址中) 地址栏上面输入 %appdata% 在这里面新建一个文件夹pip 在pip文件夹里面新建一个文件叫做 pip.ini,内容如 ...

  5. IC卡插入与触点激活时序

    当IC卡插入接口设备时,终端应确保其所有触点处于低电平状态: 当IC卡插入接口设备后,触点须按如下方式激活: 要点: 终端必须在整个激活时序中保持RST为低电平状态: 触点物理接触之后,应在IO或CL ...

  6. css新增伪类

    :first-of-type p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素. :last-of-type p:last-of-typ ...

  7. jquery绑定回车事件

    //回车事件绑定 $(".left-content").keyup(function(event){ var theEvent = event || window.event; v ...

  8. [R] t.test()

    t.test(x, y = NULL, alternative = c("two.sided", "less","greater"), mu ...

  9. (拼接SQL语句)mysql中date类型,datetime类型

    : , . _ - /  %  &  # @ ! * | [ ] { }   ;  + = update ky set date = '18,9-2'  where id  = 1  // 2 ...

  10. bootstrap 模态框事件

    事件 描述 实例 show.bs.modal 在调用 show 方法后触发. $('#identifier').on('show.bs.modal', function () { // 执行一些动作. ...