63. Unique Paths II
2016-08-23 15:29
375 查看
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.
The total number of unique paths is 2.
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.
1 time is O(mn) ,space is O(mn)
path is m*nclass Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); vector<vector<int>> path(m,vector<int>(n,0)); for(int i = 0; i < m; i++){ if(!obstacleGrid[i][0]){ path[i][0] = 1; } else break; } for(int j = 0; j < n; j++){ if(!obstacleGrid[0][j]){ path[0][j] = 1; } else break; } for(int j = 1; j < n; j++){ for(int i = 1; i < m; i++){ if(!obstacleGrid[i][j]){ path[i][j] = path[i-1][j] + path[i][j-1]; } } } return path[m-1][n-1]; } };
2 time is O(mn),space is O(mn),but code is more concise
path is (m+1)*(n+1)class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); vector<vector<int>> path(m+1,vector<int>(n+1,0)); path[0][1] = 1; for(int j = 1; j <= n; j++){ for(int i = 1; i <= m; i++){ if(!obstacleGrid[i-1][j-1]){ path[i][j] = path[i-1][j] + path[i][j-1]; } } } return path[m] ; } };
3 code more concise,space is O(m)
class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(), n = obstacleGrid[0].size(); vector<int> temp(m + 1, 0); temp[m-1] = 1; for (int j = n - 1; j >= 0; j--) { for (int i = m - 1; i >= 0; i--) { if (obstacleGrid[i][j]) temp[i] = 0; else temp[i] += temp[i+1]; } } return temp[0]; } };
相关文章推荐
- Unique Paths II
- Unique Paths I
- 62. Unique Paths
- leetcode-62 Unique Paths
- ArrayDeque解析
- 有没有想过用简单办法拿到某个view的父ViewController
- vue.js的使用
- guice基本使用,常用的绑定方式(四)
- errcode":40033,"errmsg":"invalid charset. please check your request, if include \\uxxxx will create
- request.getRequestDispatcher().forward(request.response)
- HDU 5312 Sequence(三角形数应用)——BestCoder 1st Anniversary ($)
- easyui问题
- Transmitting Network Data Using Volley 之Sending a Simple Request
- 详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
- web.xml is missing and <failOnMissingWebXml> is set to true
- AndroidUiAutomator使用Jenkins搭建持续集成测试系统Ⅱ
- AndroidUiAutomator使用Jenkins搭建持续集成测试系统Ⅰ—Android UiAutomator以及快速编译方法
- NavigationBar设置对UICollectionView的content显示偏移影响
- iOS 实现UIImageView的椭圆效果
- GPUImage