题目要求如下:

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相关推荐

  1. [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 ...

  2. 【动态规划】LeetCode 63. Unique Paths II

    LeetCode 63. Unique Paths II Solution1:我的答案 在哪里做过这题? class Solution { public:int uniquePathsWithObst ...

  3. 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的题目就很轻松 ...

  4. [LeetCode]--63. Unique Paths II

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...

  5. LeetCode 63. Unique Paths II

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...

  6. 63. Unique Paths II

    和Unique paths是一样的 1 public int uniquePathsWithObstacles(int[][] obstacleGrid) { 2 if(obstacleGrid == ...

  7. leetcode算法题--Unique Paths II

    原题链接:https://leetcode.com/problems/unique-paths-ii/ class Solution {public:int uniquePathsWithObstac ...

  8. 63. Unique Paths II 动态规划

    description: https://leetcode.com/problems/unique-paths/ 机器人从一堆方格的左上角走到右下角,只能往右或者往下走 ,问有几种走法,这个加了难度, ...

  9. 63. Unique Paths II 不同路径 II

    Title 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为 ...

  10. Unique Paths II leetcode java

    题目: Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. H ...

最新文章

  1. Android自定义View:MeasureSpec的真正意义与View大小控制
  2. 数字测图原理与方法的实习日志_【技术】消费级无人机倾斜摄影测量1:500测图方法及精度研究...
  3. 关于this的指向问题
  4. 微信支付分申请接入流程
  5. glibc malloc
  6. 这个帖子要收藏,以后用得着--python 实时获取子进程输出
  7. volley imagerequest
  8. Hive分区和桶的概念
  9. 010 Editor for Mac(十六进制编辑器)
  10. PIX4D工作手册分享
  11. arcgis xml 下载 切片_ArcGIS创建tpk切片缓存
  12. CSDN获取C币方法
  13. 20170403_Windows网络编程视频学习1
  14. 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
  15. 怎样才能通过c语言二级考试,如何一次就通过全国计算机二级C语言考试,高分技巧四部曲...
  16. 斗鱼弹幕服务器第三方接入协议v1.6.2,.NET斗鱼直播弹幕客户端(上)
  17. 联想ThinkBook解锁FN键
  18. spring boot 在fastdfs文件上传大小限制
  19. 分布式轻量级任务调度框架-XXL-JOB(最全面,附带本人实战)
  20. 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest:Gym 101667L

热门文章

  1. 谷歌地图离线包-尝试
  2. HEVC中的样点自适应补偿——Sample Adaptive Offset (SAO)
  3. 计算机系统结构试卷填空,计算机系统结构试卷
  4. 20200714一维数组的经典例题(成绩的最高分,最低分;猜中数字游戏;数组的增添改查;)
  5. 金蝶K3 数据表知识整理(不断完善)
  6. Android证书签名生成
  7. Uploadify-中文帮助手册
  8. 创客匠人打造在线课堂,助力内容变现
  9. 油田智能化远程监控系统_油田远程监控系统方案
  10. 分享一个响应式电商网站前端模板