题目:

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. SpringBoot启动流程分析(一):SpringApplication类初始化过程

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  2. PHP网站常见安全漏洞 及相应防范措施总结

    一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见的漏洞有五种.分别是Session文件漏洞.SQL注入漏洞.脚本命令执行漏洞.全局变量漏洞和文件漏洞.这里分别对这些漏洞进行简要的介绍. 1.se ...

  3. Zend API:深入 PHP 内核

    Introduction Those who know don't talk. Those who talk don't know. Sometimes, PHP "as is" ...

  4. 06 redis中set结构及命令详解

    集合 set 相关命令 集合的性质: 唯一性,无序性,确定性 注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素 但,因为集合的无序性,无法通过下 ...

  5. Intellj IDEA光标替insert状态,back键无法删除内容

    Intellj IDEA光标为insert状态,无法删除内容导入项目后,发现打开java文件的光标是win系统下按了insert键后的那种宽的光标,并且还无法删除内容,且按删除(delete)键也只见 ...

  6. Ubuntu64位安装Adobe Reader 9.5.5

    Aodbe Reader在Linux下的效果比Foxit Reader(福昕阅读器)要好一些,尤其对于中文文档而言.本文介绍Adobe Reader在Ubuntu下的安装,文章<Ubuntu12 ...

  7. 【bootstrap】右侧sidebar不跟着内容滚动的异常

    移动开发需要依赖于Web服务的接口,但是写这个接口文档实在是比较繁琐,所以今天我就写了个包解析程序自动生成接口文档. 内容显示我是借鉴Bootstrap的官方教程http://v3.bootcss.c ...

  8. jquery实现重置

    $('#reset').click(function(){ $('#info_frm')[0].reset(); });

  9. 1194: [HNOI2006]潘多拉的盒子

    1194: [HNOI2006]潘多拉的盒子 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 464  Solved: 221[Submit][Stat ...

  10. Linux 设置mysql开机启动

    linux开启启动的程序一般放在/etc/rc.d/init.d/里面,/etc/init.d/是其软连接 mysql设为linux服务 cp /usr/local/mysql/support-fil ...