题目:

给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后达到右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。

举例:

给定的m如下:

1 3 5 9
8 1 3 4
5 0 6 1
8 8 4 0

路径1,3,1,0,6,1,0是所有路径中路径和最小的,所以返回12。

代码实现:

方法一:

/*** 借助m*n的辅助空间来解决问题* @param nums* @return*/
public static int getMinPathSum1(int nums[][]){if(nums == null || nums.length == 0 || nums[0] == null || nums[0].length == 0){return 0;}int row = nums.length;int col = nums[0].length;int [][]dp = new int[row][col];dp[0][0] = nums[0][0];for(int i = 1; i < row; i++){dp[i][0] = dp[i-1][0] + nums[i][0];}for(int j = 1; j < col; j++){dp[0][j] = dp[0][j-1] + nums[0][j];}for(int i = 1; i < row; i++){for(int j = 1; j < col; j++){dp[i][j] = Math.min(dp[i][j-1], dp[i-1][j]) + nums[i][j];}}return dp[row-1][col-1];
}

方法二:

/*** 借助于m*1或者1*n的辅助空间* @return*/
public static int getMinPathSum2(int nums[][]){if(nums == null || nums.length == 0 || nums[0] == null || nums[0].length == 0){return 0;}int more = Math.max(nums.length, nums[0].length); //得到行与列的较大值为moreint less = Math.min(nums.length, nums[0].length); //得到行与列的较小值为lessboolean rowmore = more == nums.length; //行数是不是大于列数int arr[] = new int[less]; //辅助空间仅为行或者列的最小值arr[0] = nums[0][0];for(int i = 1; i < less; i++){arr[i] = arr[i-1] + (rowmore ? nums[0][i] : nums[i][0]); }for(int i = 1; i < more; i++){arr[0] = arr[0] + (rowmore ? nums[i][0] : nums[0][i]);for(int j = 1; i < less; j++){arr[j] = Math.min(arr[j-1], arr[j]) + (rowmore ? nums[i][j]:nums[j][i]);}}return arr[less-1];
}

矩阵的最小路径和(Java)相关推荐

  1. 《LeetCode力扣练习》第64题 最小路径和 Java

    <LeetCode力扣练习>第64题 最小路径和 Java 一.资源 题目: 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为 ...

  2. 牛客题霸 [矩阵的最小路径和] C++题解/答案

    牛客题霸 [矩阵的最小路径和] C++题解/答案. 题目描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的 ...

  3. 矩阵的最小路径和——动态规划

    题目描述: 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和. 示例: [[1,3,5,9] ...

  4. 【剑指offer】面试题12:矩阵中的路径(Java)

    请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径不能再 ...

  5. 【LeetCode笔记】79. 单词搜索 剑指 Offer 12 矩阵中的路径(Java、dfs)

    文章目录 题目描述 思路 & 代码 更新版 2.0 题目描述 一眼dfs,走四个方向即可 思路 & 代码 class Solution {boolean[][] visited;boo ...

  6. 动态规划示例汇总-Java版(组合硬币、跳台阶、最小路径和、最长递增子序列、最长公共子序列、01背包问题、最小编辑代价)

    动态规划算法示例汇总-Java版 组合硬币 Java解题-暴力搜索 Java解题-记忆搜索 Java解题-动态规划(两种写法) 跳台阶 Java解题-暴力递归 Java解题-动态规划 矩阵最小路径和 ...

  7. Java 练习 1.三角形最小路径和 2.外出采摘的日本人 3.最大矩形

    三角形最小路径和 给定一个三角形 triangle ,找出自顶向下的最小路径和. 每一步只能移动到下一行中相邻的结点上.相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 ...

  8. 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)

    1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...

  9. leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)

    题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...

最新文章

  1. 百度开设「黄埔学院」,革新者来
  2. 第三代DNA测序及其相关生物信息学技术发展概况
  3. 基于2-channel network的图片相似度判别
  4. android蓝牙音乐之AVRCP介绍和使用
  5. 【Google Play】IARC 年龄分级 ( IARC 国际年龄分级联盟 | Google Play 设置应用年龄分级 )
  6. Intellij idea workflow 工作流插件安装
  7. IdentityServer4(7)- 使用客户端认证控制API访问(客户端授权模式)
  8. nginx系列之六:cache服务
  9. python--循环列表中字典元素
  10. python迭代函数例题_python map 函数使用,遍历访问可迭代对象
  11. CentOS7安装Gnome GUI图形界面
  12. 《C语言编程初学者指南》一导读
  13. 给大家讲讲在哪些地方发外链最好
  14. 【系统分析与设计】高校学生社团管理系统
  15. [Protues]protues8使用示波器制作李沙育图形
  16. 简单的Python爬虫刷访问量程序
  17. Lexicon Enhanced Chinese Sequence Labelling Using BERT Adapter 论文解读
  18. 科学网肖波:海外博后申请的一点经验与看法
  19. 微软雅黑与微软正黑体
  20. Android硬件开发------计步传感器

热门文章

  1. 水溶的球形金纳米颗粒浓度1mg/ml|纳米金粒径13nm|Ag@SiO2核壳纳米粒子内核15nm外核5nm
  2. 高阶函数和回调函数的区别
  3. golang 记一次data race排查过程
  4. 上海自考计算机本科考哪些专业吗,上海自考本科有哪些专业
  5. SpringApplication.run(MyApplication.class, args)运行流程源码分析
  6. 【最新】智慧图书馆管理软件应该全面考量各个模块的建设
  7. ADI官网资料检索技巧
  8. Qno侠诺中小型企业ERP远程接入方案(转)
  9. 30个顶级Python库 | 用于深度学习、自然语言处理和计算机视觉
  10. C++ 算法设计与分析 地图着色问题(中国+美国)