Leetcode题解(21)
62. Unique Paths
题目

分析:
机器人一共要走m+n-2步,现在举个例子类比,有一个m+n-2位的二进制数,现在要在其中的m位填0,其余各位填1,一共有C(m+n-2,m-1)种可能,如果0表示向下走,1表示向右走,这样就和题目意思一样了。
现在考虑最后一步的走法,要么向右走到达终点,要么向下走到达终点,因此
f(m,n) = f(m,n-1)+f(m-1,n);
代码如下(主要考虑的是大数据):
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> v(m, vector<int>(n, ));
for(int i=; i<m; ++i){
for(int j=; j<n; ++j){
v[i][j]=v[i-][j]+v[i][j-];
}
}
return v[m-][n-];
}
};
----------------------------------------------------------------------------分割线----------------------------------------------------------------------
63、Unique Paths II
题目

分析:这一题和62题的思路是一样,都是采用递推公式f(m,n) = f(m,n-1)+f(m-1,n);只不过在障碍处,f(m,n)=0
代码如下:
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m = obstacleGrid.size();
int n = obstacleGrid[].size();
vector<vector<int>> v(m, vector<int>(n, ));
for(int i=;i<n;)
if(obstacleGrid[][i] == )
{
while(i<n)
{
v[][i] = ;
i++;
}
}
else
{
v[][i] = ;
i++;
}
for(int i=;i<m;)
if(obstacleGrid[i][] == )
{
while(i<m)
{
v[i][] = ;
i++;
}
}
else
{
v[i][] = ;
i++;
}
for(int i=; i<m; ++i){
for(int j=; j<n; ++j){
if(obstacleGrid[i][j] == )
v[i][j] = ;
else
v[i][j]=v[i-][j]+v[i][j-];
}
}
return v[m-][n-];
}
};
---------------------------------------------------------------------------------分割线-----------------------------------------------------------------
64. Minimum Path Sum
题目

分析:f(m,n) = min(f(m,n-1),f(m-1,n))+a[m][n]
代码如下
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size();
int n = grid[].size();
vector<vector<int>> v(m, vector<int>(n, ));
int temp=;
for(int i = ;i<n;i++)
{
v[][i] = temp + grid[][i];
temp = v[][i];
}
temp=;
for(int i = ;i<m;i++)
{
v[i][] = temp + grid[i][];
temp = v[i][];
}
//v[0][0] = v[0][0]-grid[0][0];
for(int i=; i<m; ++i){
for(int j=; j<n; ++j){
if(v[i-][j]>v[i][j-])
temp = v[i][j-];
else
temp = v[i-][j];
v[i][j] = grid[i][j]+temp;
}
}
return v[m-][n-];
}
};
Leetcode题解(21)的更多相关文章
- [LeetCode题解]21. 合并两个有序链表 | 递归
解题思路 使用递归实现: 定义函数功能:合并两个有序链表,并返回链表的头 结束条件:两个链表其中一个为空,返回另一个链表 递推公式: l1.val < l2.val:l1.next = Merg ...
- 【LeetCode题解】7_反转整数
目录 [LeetCode题解]7_反转整数 描述 方法一 思路 Java 实现 类似的 Java 实现 Python 实现 方法二:转化为求字符串的倒序 Java 实现 Python 实现 [Leet ...
- [LeetCode 题解]: Roman to Interger
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a ro ...
- [LeetCode题解]: Sort Colors
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given an a ...
- [LeetCode 题解]: Maximum Subarray
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Find the c ...
- [LeetCode 题解]:Gas Station
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 There are ...
- [LeetCode 题解]: plusOne
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a no ...
- [LeetCode 题解]: ZigZag Conversion
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 The string ...
- LeetCode题解: LRU Cache 缓存设计
LeetCode题解: LRU Cache 缓存设计 2014年12月10日 08:54:16 邴越 阅读数 1101更多 分类专栏: LeetCode 版权声明:本文为博主原创文章,遵循CC 4 ...
- 【LeetCode题解】二叉树的遍历
我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有 ...
随机推荐
- Redis学习笔记之二 :在Java项目中使用Redis
成功配置redis之后,便来学习使用redis.首先了解下redis的数据类型. Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set( ...
- JAVA实现上传文件到服务器、删除服务器文件
使用的jar包: <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</art ...
- C语言编程练习(一)
问题一: 问题描述:输入n个数,n<=100,找到其中最小的数和最大的数 输入样例: 4 1 2 3 4 输出样例:14 #include " ...
- 搭建LAMP环境示例
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- C++格式化硬盘程序
#include using namespace std; //声明命名空间 void main() { char format[12]="format", name[10], ...
- DSCP 与IP 优先级IP优先级
在IPv4的报文头中,TOS字段是1字节,如下图所示.根据RFC1122的定义,IP优先级(IPPrecedence)使用最高3比特(第0-2比特).+++++++++++++++++++++++++ ...
- HDU1251统计难题(水字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- 浅谈Java接口
接口(英文:Interface)是Java中非常重要的内容,初学的时候可能感受不深,但是在做项目的时候,对面向接口编程的运用就变得尤为重要,不过这是后话了.现在先讨论假如是刚刚接触接口这个概念,该怎么 ...
- mybatis 和hibernate的区别
mybaits 是不完全的orm(对象关系映射(Object Relational Mapping)框架,需要自己书写sql语句 mybatis学习难度必hibernate低适合关系型模型要求不高的软 ...
- 容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)
背景 在docker容器中部署了一微服务,该服务需要docker push镜像到docker registry.因此,docker容器中需要安装docker服务.但在启动容器的时候,却报错: can' ...