leetcode63. Unique Paths II
来源:互联网 发布:淘宝客服用语 物流慢 编辑:程序博客网 时间:2024/06/04 19:50
题目描述(难度:Medium):
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.
Tags: Array, Dynamic Programming
Similar Problems: (M) Unique Paths
分析:求解path的种类数量(种类数动规/棋盘类动规)
设dp[i][j]表示从左上角到达grid[i][j]时的种类数,
if dp[i][j]==1, 则dp[i][j] = 0(不通达)
if dp[i][j]==0, 则dp[i][j] = dp[i-1][j]+dp[i][j-1]
代码实现:
class Solution(object): def uniquePathsWithObstacles(self, obstacleGrid): """ :type obstacleGrid: List[List[int]] :rtype: int """ #1.先做输入处理 m = len(obstacleGrid) n = len(obstacleGrid[0]) if m else 0 if m==0 or n==0: return 0 #2.初始化,同时注意dp[0][0]的值 dp = [ [0]*n for i in range(m) ] if obstacleGrid[0][0] == 0: dp[0][0] = 1 for i in range(1, m): if obstacleGrid[i][0] == 0: dp[i][0] = dp[i-1][0] for j in range(1, n): if obstacleGrid[0][j] == 0: dp[0][j] = dp[0][j-1] #3.dp for i in range(1, m): for j in range(1, n): if obstacleGrid[i][j] == 0: dp[i][j] = dp[i-1][j]+dp[i][j-1] return dp[m-1][n-1]
0 0
- LeetCode63:Unique Paths II
- Leetcode63 Unique Paths II
- LeetCode63. Unique Paths II
- leetcode63-Unique Paths II
- Leetcode63. Unique Paths II
- Leetcode63: Unique Paths II
- leetcode63. Unique Paths II
- leetcode63. Unique Paths II
- LeetCode63 Unique Paths II
- leetcode63.[DP] Unique Paths II
- LeetCode63——Unique Paths II
- Unique Paths & Unique Paths II
- Unique Paths &&Unique Paths II
- Unique Paths & Unique Paths II
- Unique Paths & Unique Paths II
- LeetCode: Unique Paths II
- [Leetcode] Unique Paths II
- LeetCode : Unique Paths II
- 读取Spring配置文件
- 解决Android Studio配置签名出现的问题
- 两次入坑逆向拓扑序(POJ 3687 Labeling Balls and HDU 4857 逃生)
- 自定义Dialog
- 理解async
- leetcode63. Unique Paths II
- 5.1.1图的深度优先遍历
- 如何防止表单重复提交
- Qt 中设置窗体透明度的几种方法
- 在 JavaScript 中 prototype 和 __proto__ 有什么区别
- 终于知道为什么我的ButterKnife不管用了
- 状压DP进阶-POJ2411
- C语言预处理器
- 布尔代数入门