力扣64-最小路径和

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

        利用动态规划算法,很容易解决。参考代码如下,如果弄明白第63道题思想,这个就更好理解了。第63题解题步骤和解析:力扣63-不同路径Ⅱ_sunny_daily的博客-CSDN博客

package likou;
/*
 * 64.最小路径和
 * 题干:
 * 	给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
 *  说明:每次只能向下或者向右移动一步。
 */
public class Demo64 {
	/*
	 * 解题思路:
	 * 	分两种情况考虑,如果弄明白第63道题,这道题则很容易解
	 */
	  public int minPathSum(int[][] grid) {
              int rowLength = grid.length;
              int columnLength = grid[0].length;
              //考虑特殊情况
              if(rowLength == 1 || rowLength == 1) {
            	  int sum = 0;
            	  for(int i=0;i<rowLength;i++) {
            		  int[] temp = grid[i];
            		  for(int j=0;j<columnLength;j++) {
            			  sum +=temp[j];
            		  }
            	  }
            	  return sum;
              }
              //[[1,3,1],[1,5,1],[4,2,1]]
              int[] upArray = grid[0];
              for(int k=1;k<columnLength;k++) {
            	  upArray[k] = upArray[k-1]+upArray[k];
              }
              for(int i=1;i<rowLength;i++) {
            	  int[] currentArray = grid[i];
            	  currentArray[0] = upArray[0]+currentArray[0];
            	  for(int j=1;j<columnLength;j++) {
            		  currentArray[j] = Math.min(currentArray[j-1], upArray[j])+currentArray[j];
            	  }
            	  upArray = currentArray;
              }
              return upArray[columnLength-1];   
	    }
	  
	  
	  public static void main(String args[]) {
		 int[][] grid =  {{0}};
		 Demo64 demo = new Demo64();
		 System.out.println(demo.minPathSum(grid));		 
	  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunny_daily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值