题目:63. 不同路径 II
我的感悟:
- 题目不难,就是不知道哪个煞笔,把路拦截死了,并且入口就放石头,我真是吐了。
理解难点:
- 初始值的遇到障碍要Break
- 其他我写的没错
- 边界考虑:还有入口和出口有障碍物的话,要直接返回0.
听课笔记:
- 差不多,
- 考虑的点就是:
- 初始值后面为break
- 开头和结尾有障碍物的时候,直接return 0
- 其他一样
代码示例:
class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
m = len(obstacleGrid) # 外层 深度
n = len(obstacleGrid[0]) # 内层 长度
if obstacleGrid[m - 1][n - 1] == 1 or obstacleGrid[0][0] == 1:
return 0
dp = [[0]*n for _ in range(m)]
for i in range(m): # 外层
if obstacleGrid[i][0] ==1:
break # 说明有障碍物了
# 只有没有障碍物就设置为1
dp[i][0] = 1
for i in range(n): # 内层
if obstacleGrid[0][i]==1:
break
dp[0][i] = 1
for i in range(1,m):
for j in range(1,n):
if obstacleGrid[i][j] ==1: # 如果这里有障碍物就跳过
# dp[i][j] = 0 这里写不写懂都可以
continue
dp[i][j] = dp[i-1][j] + dp[i][j-1]
return dp[m-1][n-1]
通过的截图:
未通过截图:
扩展写法:
资料:
- 不同路径 II
视频讲解:https://www.bilibili.com/video/BV1Ld4y1k7c6
标签:障碍物,obstacleGrid,day39,E5%,随想录,II,range,dp From: https://www.cnblogs.com/liqi175/p/18027118