Unique path ii
Follow up for "Unique Paths":
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as 1 and 0 respectively
in the grid.
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
[
[0,0,0],
[0,1,0],
[0,0,0]
]
The total number of unique paths is 2.
Note: m and n will be at most 100.
题目分析:
是机器人从左上角走到右下角的路径统计数(仅仅能向右或者向下走),这跟第一题不同的是设置了路障。不能用第一题的Cm-1m+n-2(參考http://blog.csdn.net/sinat_24520925/article/details/45769317)种来计算。
以下我们用第二种思路来求该类题,假设机器人要到达位置(i,j),则它到(i,j)是从(i-1,j)向下一步到达,或是从(i,j-1)向右一步到达,也就是说到达(i,j)的路径数是到达(i-1,j)路径数+到达(i,j-1)路径数.如图要到达星星必须经过星星上面方框或者左边方框。即r[i,j]=r[i-1,j]+r[i,j-1]
由于我们按行依次往下找。所以第一行遍历完之后得到第一行全部路径res(n),第二行的时候res(n)值没变。指的是上一行的结果,我们最后仅仅需知道最后一行的结果就可以,所以用第二行的res将第一行的替换掉。此时r[i-1,j]指的是res[j],而r[i,j-1]指的是res[j-1],所以更新得到的res[j]=res[j]+res[j+1].
这样的解题思路为动态规划。这样能够简单求解path sum的第一题,在第二题时,稍作变动就可以。放置障碍物的那一个res[j]=0就可以。
第一题无障碍的代码例如以下:
class Solution {
public:
int uniquePaths(int m, int n) {
if(m==0||n==0) return 0;
vector<int> res(n,0);
res[0]=1;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
res[j]+=res[j-1];
}
return res[n-1];
}
};
第二题有障碍物的代码例如以下:
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
if(obstacleGrid.size() == 0 || obstacleGrid[0].size()==0)
return 0;
int m=obstacleGrid.size();
int n=obstacleGrid[0].size();
vector<int> res(n,0);
res[0]=1;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(obstacleGrid[i][j]==1)
res[j]=0;
else
{
if(j!=0)
res[j]+=res[j-1];
}
}
}
return res[n-1];
}
};
Unique path ii的更多相关文章
- LeetCode 63. Unique Path II(所有不同路径之二)
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- leetcode63—Unique Path II
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- LeetCode之“动态规划”:Minimum Path Sum && Unique Paths && Unique Paths II
之所以将这三道题放在一起,是因为这三道题非常类似. 1. Minimum Path Sum 题目链接 题目要求: Given a m x n grid filled with non-negative ...
- [LeetCode] Unique Paths && Unique Paths II && Minimum Path Sum (动态规划之 Matrix DP )
Unique Paths https://oj.leetcode.com/problems/unique-paths/ A robot is located at the top-left corne ...
- 动态规划小结 - 二维动态规划 - 时间复杂度 O(n*n)的棋盘型,题 [LeetCode] Minimum Path Sum,Unique Paths II,Edit Distance
引言 二维动态规划中最常见的是棋盘型二维动态规划. 即 func(i, j) 往往只和 func(i-1, j-1), func(i-1, j) 以及 func(i, j-1) 有关 这种情况下,时间 ...
- 【LeetCode】63. Unique Paths II
Unique Paths II Follow up for "Unique Paths": Now consider if some obstacles are added to ...
- LEETCODE —— Unique Paths II [动态规划 Dynamic Programming]
唯一路径问题II Unique Paths II Follow up for "Unique Paths": Now consider if some obstacles are ...
- 62. Unique Paths && 63 Unique Paths II
https://leetcode.com/problems/unique-paths/ 这道题,不利用动态规划基本上规模变大会运行超时,下面自己写得这段代码,直接暴力破解,只能应付小规模的情形,当23 ...
- 【leetcode】Unique Paths II
Unique Paths II Total Accepted: 22828 Total Submissions: 81414My Submissions Follow up for "Uni ...
随机推荐
- 火狐浏览器中加入httprequest的方法
今天弄了非常久就才装好. 以下的样例是以 window为样例的,mac的也是这样, 下载好火狐之后点击右上角的菜单 想到httprequest是个插件,就点击附加组件 搜索出来之后找到httprequ ...
- 通过Src下载图片存到指定目录
string src = temppartsrc + "." + pictype; HttpWebRequest request = (HttpWebReq ...
- 转换Arcgis Server REST接口实现OL2直接调用
概述: 本文解说怎样通过Arcgis Server REST 的导出地图(Export)接口.实如今OL2中直接以WMS的方式调用Arcgis Server REST服务. 实现思路: 1.rest的 ...
- ES JVM使用如果超过75%就会GC较多,导致ES索引性能下降
转自:https://www.elastic.co/guide/en/cloud/current/ec-metrics-memory-pressure.html Scenario: How Does ...
- python中类的定义、实例化、封装以及私有变量/方法
1. 定义类 python中定义一个类的格式如下: class MyClass(object): def __init__(self,data1,data2): self.__data1=data1 ...
- BZOJ 1500 splay终结版...
GSS系列有一丝丝像- 只不过那个是线段树 这个是splay 翻转 插入 删除啥的就是普通的splay 合在一起了而已 //By SiriusRen #include <cstdio> # ...
- 自定义TempData跨平台思路
一:TempData的自定义实现... TempData是用Session实现的,既然是Session,那模式是线程方式...这样的Session是没法进行跨平台的... 那么这就涉及到如何在多台机器 ...
- js获取浏览器缩放比例
前几天在做项目的时候遇到浏览器缩放比例不为100%时,出来的页面不正常,于是找到了方法获取其比例来通知用户 function detectZoom (){ , screen = window.scre ...
- canvas绘制饼型图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用JS&jQuery改善用户体验
第一章 JavaScript基本语法 一.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&= ...