64. Minimum Path Sum
2016-05-27 13:06
260 查看
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.
利用DP的思想,因为只能向下或者是向右,所以不用考虑其他。
一般:
d[i][j]=min{dp[i-1][j],dp[i][j-1]}+grid[i][j];
边缘:
d[0][j]=dp[0][j-1]+grid[0][j];
d[i][0]=dp[i-1][0]+grid[i][0];不需要额外的空间,直接使用grid即可
Note: You can only move either down or right at any point in time.
利用DP的思想,因为只能向下或者是向右,所以不用考虑其他。
一般:
d[i][j]=min{dp[i-1][j],dp[i][j-1]}+grid[i][j];
边缘:
d[0][j]=dp[0][j-1]+grid[0][j];
d[i][0]=dp[i-1][0]+grid[i][0];不需要额外的空间,直接使用grid即可
public class Solution { public int minPathSum(int[][] grid) { if(grid==null || grid.length==0){ return 0; } int m=grid.length,n=grid[0].length;//m行n列 for(int j=1;j<n;j++){ grid[0][j]=grid[0][j-1]+grid[0][j]; } for(int i=1;i<m;i++){ grid[i][0]=grid[i-1][0]+grid[i][0]; } for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ grid[i][j]=Math.min(grid[i-1][j],grid[i][j-1])+grid[i][j]; } } m = m==0?m=0:m-1; n = n==0?n=0:n-1; return grid[m] ; } }
相关文章推荐
- 289. Game of Life
- 349. Intersection of Two Arrays I &&II (Java)
- 11. Container With Most Water
- 48. Rotate Image
- 75. Sort Colors
- 几个字符串相关的题目,来自LeetCode和LintCode
- 347. Top K Frequent Element(java)
- 109. Convert Sorted List to Binary Search Tree
- 2. Add Two Numbers(Java)
- 142. Linked List Cycle I&II
- 66. Plus One(Java) & 43. Multiply Strings
- 154. Find Minimum in Rotated Sorted Array II
- 59. Spiral Matrix II
- 常用排序算法的时间复杂度和空间复杂度
- 一个可变参数类型检查的示例
- C primer plus 第八章 例题疑问(递归)(求解答求回复)
- Divisors
- 文本框改变事件
- 《构建之法》第8、9、10章 读后感
- 实践——ELF文件格式分析