64. 最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]

输出:7

解释:因为路径 1→3→1→1→1 的总和最小。

示例 2:

输入:grid = [[1,2,3],[4,5,6]]

输出:12

思路:与上题机器人的写法差不多,不一样的点为机器人是算全部路径因此是上左两边都得加上,这个只求最小,因此只需要记录一条,并且保存从上边和左边通过的两者的最小值再加上其本身的大小。

代码如下:

class Solution {
public int minPathSum(int[][] grid) {
if (grid == null || grid.length == 0 || grid[0].length == 0) {
return 0;
}
int[][] dp = new int[grid.length][grid[0].length];
for(int i = 0 ; i< grid.length ; i++){
for(int j=0;j<grid[i].length;j++){
if(i==0){
if(j==0){
dp[i][j] = grid[i][j];
}else{
dp[i][j] = grid[i][j]+dp[i][j-1];
}
}else if(j==0){
if(i==0){
dp[i][j] = grid[i][j];
}else{
dp[i][j] = grid[i][j]+dp[i-1][j];
}
}else{
dp[i][j] = grid[i][j]+Math.min(dp[i-1][j],dp[i][j-1]);
}
}
}
return dp[grid.length-1][grid[0].length-1];
}
}

代码可简写,不需要dp数组直接在原数组上变化即可,而且其中横纵坐标为0的不用我那么麻烦,直接加左边或者下面即可。代码如下所示

class Solution {
public int minPathSum(int[][] grid) {
if (grid == null || grid.length == 0 || grid[0].length == 0) {
return 0;
}
for(int i=1;i<grid.length;i++){
grid[i][0] += grid[i-1][0];
}
for(int i=1;i<grid[0].length;i++){
grid[0][i] +=grid[0][i-1];
}
for(int i = 1 ; i< grid.length ; i++){
for(int j=1;j<grid[i].length;j++){
grid[i][j] += Math.min(grid[i-1][j],grid[i][j-1]);
}
}
return grid[grid.length-1][grid[0].length-1];
}
}

最新文章

  1. 腾讯开放平台 IOS应用URL schema、Boundle ID填写 (含微博、微信)
  2. 应中DOS中断显示字符串(摘自《汇编语言》王爽)
  3. Codeforces Round #259 (Div. 2) C - Little Pony and Expected Maximum
  4. 【技术·水】浅谈Dism++清理插件开发
  5. [ZOJ 3631] Watashi&#39;s BG
  6. Highcharts 基本曲线图
  7. Visual Studio中的lib的链接顺序
  8. 关于K-Means算法
  9. MVC验证05-自定义验证规则、验证2个属性值不等
  10. org.apache.log4j.Logger 详解
  11. [Swift]LeetCode340.最多有K个不同字符的最长子串 $ Longest Substring with At Most K Distinct Characters
  12. HTML5 classList使用
  13. WPF 列表虚拟化时的滚动方式
  14. Java文件复制
  15. Android SQLite用法
  16. 【鬼畜】UVA - 401每日一题&#183;猛男就是要暴力打表
  17. maven maven.compiler.source和maven.compiler.target的坑
  18. 基于Redis实现分布式锁以及任务队列
  19. Python重要基础点
  20. Assign the task---hdu3974(线段树优化+dfs)

热门文章

  1. 使用pyenv对python进行版本控制—很好用
  2. Vue插槽最全最通俗的总结
  3. GaussDB(DWS)现网案例:collation报错
  4. C#支付宝用户的静默授权
  5. JAVA8 常见用法
  6. Java7.10
  7. Vue前后端交互、生命周期、组件化开发
  8. 躬身入局,干货分享,2023年春招后端技术岗(Python)面试实战教程,Offer今始为君发
  9. [代码审计基础 14]某cms变量覆盖到N处漏洞
  10. LOJ 数列分块入门 8