题目:

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.

题解:

Solution 1 ()

class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = (int) grid.size(), n = (int) grid[].size();
vector<long> dp(n,INT_MAX);
dp[] = grid[][];
for(int i=; i<m; ++i) {
for(int j=; j<n; ++j) {
if(j > )
dp[j] = min(dp[j] + grid[i][j], dp[j-] + grid[i][j]);
else
if(i>) dp[j] = dp[j] + grid[i][j];
}
}
return dp[n-];
}
};

  边界的第二种处理方法:因为Solution 1 中dp初始化为最大值,故需要考虑溢出情况,所以用long整型。这个就初始化为int整型。

Solution 2 ()

class Solution {
public:
int minPathSum(vector<vector<int>>& nums) {
int m = (int) nums.size();
int n = (int) nums[].size();
vector<int> v (n,);
for (int i=; i<m; ++i) {
for (int j=; j<n; ++j) {
if (i>)
v[j] = nums[i][j] + ((j>) ? min(v[j], v[j-]) : v[j]);
else
v[j] = nums[i][j] + ((j>) ? v[j-] : );
}
}
return v[n-];
}
};

  解法没变,就是边界的处理上不一样,这个是先初始化边界了。

Solution 3 ()

class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int dp[grid.size()][grid[].size()]; dp[][] = grid[][];
// init first row
for(int i = ; i < grid[].size(); i ++){
dp[][i] = dp[][i-] + grid[][i];
}
// init first col
for(int i = ; i < grid.size(); i ++){
dp[i][] = dp[i-][] + grid[i][];
}
for(int i = ; i < grid.size(); i ++){
for(int j = ; j < grid[].size(); j++){
dp[i][j] = dp[i - ][j] < dp[i][j-]? dp[i - ][j] + grid[i][j] : dp[i][j-] + grid[i][j];
}
}
return dp[grid.size() - ][grid[].size() -];
}
};

【LeetCode】064. Minimum Path Sum的更多相关文章

  1. 【LeetCode】64. Minimum Path Sum

    Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path from top left to b ...

  2. 【LeetCode】64. Minimum Path Sum 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  3. 【一天一道LeetCode】#64. Minimum Path Sum.md

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  4. 【LeetCode】599. Minimum Index Sum of Two Lists 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:找到公共元素再求索引和 方法二:索引求和,使 ...

  5. 【leetcode】963. Minimum Area Rectangle II

    题目如下: Given a set of points in the xy-plane, determine the minimum area of any rectangle formed from ...

  6. 【LeetCode】71. Simplify Path 解题报告(Python)

    [LeetCode]71. Simplify Path 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://f ...

  7. 【LeetCode】452. Minimum Number of Arrows to Burst Balloons 解题报告(Python)

    [LeetCode]452. Minimum Number of Arrows to Burst Balloons 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https ...

  8. 【leetcode】712. Minimum ASCII Delete Sum for Two Strings

    题目如下: 解题思路:本题和[leetcode]583. Delete Operation for Two Strings 类似,区别在于word1[i] != word2[j]的时候,是删除word ...

  9. LeetCode OJ 64. Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

随机推荐

  1. Verilog代码规范(持续更新)

    1.输入输出的定义,看起来整齐 2.always.if或其他语句后begin写在同一行,这样可以避免begin占用过多的行,代码密度更大 3.end后面要有注释,以标明是哪个关键词的结束,除了endc ...

  2. linux uart驱动——uart原理(一)

    UART(Universal Asynchronous Receiver and Transmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议,它包括了RS232.RS499.R ...

  3. Visual Studio 2017 for Mac Preview

    Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo 目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4 ...

  4. HDU 5338(ZZX and Permutations-用线段树贪心)

    ZZX and Permutations Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/O ...

  5. jqPaginator-master | kkpager-master 这两个分页插件的使用方法

    首先:百度"分页插件" 就会 找到这条链接: url=X8P3UpOM-6ceSfjdngX0oh9cNmVwSDy94CxKqWIazhyZ7If4S8wgpPqyEGUhk2t ...

  6. iOS开发 viewWillAppear:(BOOL)animated真机调试的时候不执行了怎么办

    本文转载至http://blog.sina.com.cn/s/blog_a843a8850101e0g7.html   现在需要的.h文件里面加上. 然后,在需要的.m文件按里面加上关键代码:self ...

  7. UIScrollView奇葩不滑动

    首先要说声尼玛,真奇葩,从来都没有遇到过这个问题,首先描述一下背景: 我是用XIB拖拽了一个UIScrollView在View上,然后设置了frame,在ViewDidLoad里面,设置了scroll ...

  8. Times[2017-01-25at JiNan]

    Times[问题描述 ]小 y 作为一名资深的 dotaer,对视野的控制有着深刻的研究.每个单位在一段特定的时间内会出现在小 y 的视野内,除此之外的时间都在小 y 看不到的地方.在小 y 看来,视 ...

  9. HIbernate 级联删除

    在一对多的情形下如 Cinema - > Screen; 1.正常在不设置级联(casCade)的情况下 删除一的一方(Cinema)会报外键关联异常 (Screen 中包含Cinema的外键) ...

  10. C# 自定义控件制作和使用实例(winform)(转)

    本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果. 我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享.   第一步:新建一个 ...