【LeetCode】064. Minimum Path Sum
题目:
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的更多相关文章
- 【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 ...
- 【LeetCode】64. Minimum Path Sum 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【一天一道LeetCode】#64. Minimum Path Sum.md
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- 【LeetCode】599. Minimum Index Sum of Two Lists 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:找到公共元素再求索引和 方法二:索引求和,使 ...
- 【leetcode】963. Minimum Area Rectangle II
题目如下: Given a set of points in the xy-plane, determine the minimum area of any rectangle formed from ...
- 【LeetCode】71. Simplify Path 解题报告(Python)
[LeetCode]71. Simplify Path 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://f ...
- 【LeetCode】452. Minimum Number of Arrows to Burst Balloons 解题报告(Python)
[LeetCode]452. Minimum Number of Arrows to Burst Balloons 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https ...
- 【leetcode】712. Minimum ASCII Delete Sum for Two Strings
题目如下: 解题思路:本题和[leetcode]583. Delete Operation for Two Strings 类似,区别在于word1[i] != word2[j]的时候,是删除word ...
- 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 ...
随机推荐
- 初识Dubbo 系列之6-Dubbo 配置
配置 Xml配置 配置项说明 具体配置项,请參见:配置參考手冊 (+) API使用说明 假设不想使用Spring配置.而希望通过API的方式进行调用,请參见:API配置 (+) 配置使用说明 想知道怎 ...
- POJ 2456 Aggressive cows (二分 基础)
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7924 Accepted: 3959 D ...
- load-on-startup 解释
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" &qu ...
- WPF中DATAGRID自定义验证(包含BINDINGGROUP)
DataGrid在Wpf中的应用是十分广泛的,当你需要表中的信息稍详细的显示出来时,或者我们需要进行某些数据输入时,都有可能采用DataGrid.当然对信息的显示,我们不需要进行验证,但当我们将Dat ...
- WPF converter(包含传递复杂参数)
单值转换器 将单一值转换为特定类型的值,以日期转换为例如下: 1.定制DateConverter类,其中当值从绑定源传播给绑定目标时,调用方法Convert. 1 public class DateC ...
- linux 改动rootpassword以及忘记rootpassword
改动rootpassword: $ passwd root 或者sudo passwd root $password: (要求输入旧的密码) $new password:(输入两遍新密码) 忘记r ...
- WCP源码分析 与SpringMVC学习资料
1.在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便. Spring2.5为我们引入了组件自动扫描机制,他可以在 ...
- php总结1 ——php简介、工作原理、运行环境、文件构成、语法结构、注释
1.1 PHP 超文本预处理程序.实际就是制作网站的脚本程序 1.2 运行环境: wamp——windowns+apache+mySQL+php 常用于开发.学习和研究 lamp ——linu ...
- (转)javascript中call()、apply()、bind()的用法
其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge; //17 obj.myFun() //小张年龄undefined 例2 shows( ...
- 【docker】kubernetes集群一键部署包
背景说明: 随着docker使用的逐步深入,docker的管理变得越来越麻烦,单纯的通过docker命令行的方式进行管理已经不能满足需求,同时也存在效率低下的问题.所以急需一个docker集群管理工具 ...