leetCode-Minimum Path Sum
来源:互联网 发布:线切割编程软件有几种 编辑:程序博客网 时间:2024/06/03 18:15
Description:
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
Example 1:
[[1,3,1], [1,5,1], [4,2,1]]
Given the above grid map, return 7. Because the path 1→3→1→1→1 minimizes the sum.
典型的动态规划问题,我用了两种解决方法。
方法一:
//“就地”修改grid。存储dp矩阵。dp[i][j] = grid[i][j] + min(dp[i + 1][j],dp[i][j + 1])。由于第m行和第n列只能往右走或往下走,因此用两个for循环初始化了m行,n列的dp数组。然后迭代存储dp[i][j]即可,dp[0][0]即为最短路径。class Solution { public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length; for(int i = n - 2;i >= 0;i--){ grid[m - 1][i] += grid[m - 1][i + 1]; } for(int i = m - 2;i >= 0;i--){ grid[i][n - 1] += grid[i + 1][n - 1]; } for(int i = m - 2;i >= 0;i--){ for(int j = n - 2;j >= 0;j--){ grid[i][j] = grid[i][j] + Math.min(grid[i + 1][j],grid[i][j + 1]); } } return grid[0][0]; }}
方法2:
//将二维dp数组缩减到1维,减少空间复杂度class Solution { public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length; int[] sum = new int[n]; for(int i = m - 1;i >= 0;i--){ sum[n - 1] += grid[i][n - 1]; if(i == m - 1){ for(int j = n - 2;j >= 0;j--){ sum[j] = sum[j + 1] + grid[i][j]; } }else{ for(int j = n - 2;j >= 0;j--){ sum[j] = grid[i][j] + Math.min(sum[j],sum[j + 1]); } } } return sum[0]; }}
阅读全文
0 0
- LeetCode: Minimum Path Sum
- LeetCode Minimum Path Sum
- LeetCode : Minimum Path Sum
- [Leetcode] Minimum Path Sum
- [LeetCode] Minimum Path Sum
- [Leetcode] Minimum Path Sum
- [LeetCode]Minimum Path Sum
- [leetcode]Minimum Path Sum
- LeetCode-Minimum Path Sum
- [leetcode] Minimum Path Sum
- LeetCode - Minimum Path Sum
- LeetCode:Minimum Path Sum
- leetcode minimum path sum
- 【leetcode】Minimum Path Sum
- 【LeetCode】Minimum Path Sum
- Leetcode: Minimum Path Sum
- Leetcode Minimum Path Sum
- LeetCode Minimum Path Sum
- cs231n笔记(4)——正则化
- JAVA从入门到超神(二)
- 一些滑动效果插件的官方手册网站
- HOG算法
- HorizontalListView的滑动冲突解决
- leetCode-Minimum Path Sum
- java基础一阶段
- Java 深入学习(19) —— 继承
- 解释器模式
- 浅谈对象池技术在游戏中的应用
- layout_weight让layout自动调整到剩余高度
- lua 错误处理
- istio 三日谈之一: 环境准备
- 第二篇 根据识别的结果 我们可以访问一些网络 先写一个水波纹UI