zoukankan      html  css  js  c++  java
  • LeetCode-64.最小路径和

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

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

    示例:

    输入:
    [
      [1,3,1],
      [1,5,1],
      [4,2,1]
    ]
    输出: 7
    解释: 因为路径 1→3→1→1→1 的总和最小。


      本题和 LeetCode-63.不同路径Ⅱ 类型一样,只需做少量更改即可

      采用动态规划建立dp[][]数组,代表在当前位置能有的路径条数

      1.建立与网格大小一样的数组dp

      2.遍历dp

        2.1作边界的处理: 最左上角的格为grid[0][0]的值,其余网格等于其上面或左边一格的dp数值 加上自身grid的值;

        2.2因为只能向下或向右移动一步,所以可以从网格的上面或左边进入网格,有两种方式,所以 取两种方式中的最小一种,并加上自身grid的值

     1 class Solution {
     2     public int minPathSum(int[][] grid) {
     3         //1.
     4         int i=grid.length;
     5         int j=grid[0].length;
     6         int [][]dp=new int[i][j];
     7         //2.
     8         for(int m=0;m<i;m++)
     9             for(int n=0;n<j;n++){
    10                 //2.1
    11                 if(m==0&&n==0)  dp[0][0]=grid[0][0];
    12                 else if(m==0)   dp[0][n]=grid[0][n]+dp[0][n-1];
    13                 else if(n==0)   dp[m][0]=grid[m][0]+dp[m-1][0];
    14                 //2.2
    15                 else    dp[m][n]=Math.min(dp[m-1][n],dp[m][n-1])+grid[m][n];
    16             }
    17         return dp[i-1][j-1];
    18     }
    19 }
  • 相关阅读:
    JSON解析之——Android
    Xml解析之——Java/Android/Python
    Design Pattern —— Singleton
    设计模式(10)--观察者模式
    设计模式(9)--建造者模式
    设计模式(8)--外观模式
    设计模式(7)--模板模式
    设计模式(6)--原型模式
    设计模式(5)--工厂模式
    设计模式(4)--代理模式
  • 原文地址:https://www.cnblogs.com/lyh28/p/10521156.html
Copyright © 2011-2022 走看看