Leetcode NO.63 Unique Paths 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.
这题我开始没有做出来,因为原来我虽然学过数据结构,但是那门课覆盖的知识并不全,没有介绍dynamic programming算法。。而之前dp的题过于简单,即便不用dp的思想,我也能做出来,但是这题就不行了。。
简要介绍下本题的主干思路:
上图矩阵为matrix[3][3],再设定一个dp[3][3]矩阵
dp[i][j]就相当于matrix[0][0]到matrix[i][j]的路径数目。
而所谓dynamic programming,就是d[i][j] = d[i-1][j] + d[i][j-1]。。有点类似于斐波那契数列。
则最后返回的值就是dj[2][2]。
我看讨论区有一种更加简便的方法,但是我认为这么做更有利于我理解dp的思想,所以就没用那种更好的算法。。
详细代码如下所示:
class Solution {
public:int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {int height = obstacleGrid.size();int width = obstacleGrid[0].size();if (height == 0 or width == 0)return 0;if (obstacleGrid[0][0] == 1 or obstacleGrid[height-1][width-1] == 1)return 0;vector<vector<int>> dp(height, vector<int>(width, 0));dp[0][0] = 1;/* set the first row */for (int i = 1; i < width; ++i) {if (obstacleGrid[0][i] == 0)dp[0][i] = dp[0][i-1];}/* set the first column */for (int j = 1; j < height; ++j) {if (obstacleGrid[j][0] == 0)dp[j][0] = dp[j-1][0];}/* other part */for (int i = 1; i < width; ++i) {for (int j = 1; j < height; ++j) {if (obstacleGrid[j][i] == 0)dp[j][i] = dp[j-1][i] + dp[j][i-1];}}return dp[height-1][width-1];}
};
Leetcode NO.63 Unique Paths II相关推荐
- [Lintcode]115. Unique Paths II/[Leetcode]63. Unique Paths II
115. Unique Paths II/63. Unique Paths II 本题难度: Easy/Medium Topic: Dynamic Programming Description Fo ...
- 【动态规划】LeetCode 63. Unique Paths II
LeetCode 63. Unique Paths II Solution1:我的答案 在哪里做过这题? class Solution { public:int uniquePathsWithObst ...
- 63. Unique Paths II and 64. Minimum Path Sum
文章目录 1 63 Unique Paths II 1.1 题目描述 1.2 动态规划解决 2 64. Minimum Path Sum 2.1 题目理解 2.2 动态规划 这一遍刷dp的题目就很轻松 ...
- [LeetCode]--63. Unique Paths II
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- LeetCode 63. Unique Paths II
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- 63. Unique Paths II
和Unique paths是一样的 1 public int uniquePathsWithObstacles(int[][] obstacleGrid) { 2 if(obstacleGrid == ...
- leetcode算法题--Unique Paths II
原题链接:https://leetcode.com/problems/unique-paths-ii/ class Solution {public:int uniquePathsWithObstac ...
- 63. Unique Paths II 动态规划
description: https://leetcode.com/problems/unique-paths/ 机器人从一堆方格的左上角走到右下角,只能往右或者往下走 ,问有几种走法,这个加了难度, ...
- 63. Unique Paths II 不同路径 II
Title 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为 ...
- Unique Paths II leetcode java
题目: Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. H ...
最新文章
- Android自定义View:MeasureSpec的真正意义与View大小控制
- 数字测图原理与方法的实习日志_【技术】消费级无人机倾斜摄影测量1:500测图方法及精度研究...
- 关于this的指向问题
- 微信支付分申请接入流程
- glibc malloc
- 这个帖子要收藏,以后用得着--python 实时获取子进程输出
- volley imagerequest
- Hive分区和桶的概念
- 010 Editor for Mac(十六进制编辑器)
- PIX4D工作手册分享
- arcgis xml 下载 切片_ArcGIS创建tpk切片缓存
- CSDN获取C币方法
- 20170403_Windows网络编程视频学习1
- 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
- 怎样才能通过c语言二级考试,如何一次就通过全国计算机二级C语言考试,高分技巧四部曲...
- 斗鱼弹幕服务器第三方接入协议v1.6.2,.NET斗鱼直播弹幕客户端(上)
- 联想ThinkBook解锁FN键
- spring boot 在fastdfs文件上传大小限制
- 分布式轻量级任务调度框架-XXL-JOB(最全面,附带本人实战)
- 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest:Gym 101667L