zoukankan      html  css  js  c++  java
  • Leecode no.64 最小路径和

    package leecode;


    /**
    *
    * 64. 最小路径和
    *
    * 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
    *
    * 说明:每次只能向下或者向右移动一步。
    *
    *
    * @author Tang
    * @date 2021/9/7
    */
    public class MinPathSum {


    /**
    * 动态规划解决二维数组问题
    * 老规矩
    * x :每一个元素
    * f(x) :从起始位置到该元素的最小路径值
    * f(x) = MAX( f(y), f(z) )+1 y为x左边元素,z为x上边元素
    *
    * @param grid
    * @return
    */
    public int minPathSum(int[][] grid) {
    if(grid.length == 0) {
    return 0;
    }
    int down = grid.length;
    int right = grid[down-1].length;

    //构建备忘录
    int[][] tables = new int[down][right];

    /**
    * 优先按列处理
    */
    for(int i = 0; i < down; i++) {
    for(int j = 0; j < right; j++) {
    if(i == 0 && j == 0){
    tables[i][j] = grid[i][j];
    continue;
    }

    if(i == 0) {
    tables[i][j] = tables[i][j-1] + grid[i][j];
    continue;
    }
    if(j == 0) {
    tables[i][j] = tables[i-1][j] + grid[i][j];
    continue;
    }
    tables[i][j] = Math.min(tables[i-1][j], tables[i][j-1]) + grid[i][j];
    }
    }


    return tables[down-1][right-1];
    }

    public static void main(String[] args) {
    int[][] nums= {{1,2,3},{4,5,6}};
    System.out.println(new MinPathSum().minPathSum(nums));

    }

    }
  • 相关阅读:
    PDF解决方案(3)--PDF转SWF
    PDF解决方案(2)--文件转PDF
    PDF解决方案(1)--文件上传
    为JS字符类型添加trim方法
    Python:面向对象之反射
    Python:面向对象的三大特性
    Python:面向对象初识
    Python:二分查找
    Python:函数递归
    Python:内置函数
  • 原文地址:https://www.cnblogs.com/ttaall/p/15238239.html
Copyright © 2011-2022 走看看