LeetCOde 64. Minimum Path Sum
2016-07-28 13:39
489 查看
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.
典型动态规划问题。
public class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
if(m<1) return 0;
int n = grid[0].length;
for(int i = 1 ; i<m; i++){
grid[i][0] = grid[i-1][0]+grid[i][0];
}
for(int j = 1; j<n; j++){
grid[0][j] = grid[0][j] + grid[0][j-1];
}
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]);
}
}
return grid[m-1][n-1];
}
}
Note: You can only move either down or right at any point in time.
典型动态规划问题。
public class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
if(m<1) return 0;
int n = grid[0].length;
for(int i = 1 ; i<m; i++){
grid[i][0] = grid[i-1][0]+grid[i][0];
}
for(int j = 1; j<n; j++){
grid[0][j] = grid[0][j] + grid[0][j-1];
}
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]);
}
}
return grid[m-1][n-1];
}
}
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- Node.js环境下JavaScript实现单链表与双链表结构
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)