思路
根据路径的特点,使用别的格子来计算当前格子的路径数
代码
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
dp=[[0]*n for _ in range(m)]
for i in range(m):
dp[i][0]=1
for j in range(n):
dp[0][j]=1
for i in range(1,m):
for j in range(1,n):
dp[i][j]=dp[i-1][j]+dp[i][j-1]
return dp[m-1][n-1]
思路
针对dp数组初始化处理,以及对于当前节点是否障碍物需要处理
代码
class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
m=len(obstacleGrid)
n=len(obstacleGrid[0])
dp=[[0]*n for _ in range(m)]
if obstacleGrid[0][0]==0:
dp[0][0]=1
for i in range(1,m):
if obstacleGrid[i][0]==1:
dp[i][0]=0
else:
dp[i][0]=dp[i-1][0]
for j in range(1,n):
if obstacleGrid[0][j]==1:
dp[0][j]=0
else:
dp[0][j]=dp[0][j-1]
for i in range(1,m):
for j in range(1,n):
if obstacleGrid[i][j]==0:
dp[i][j]=dp[i][j-1]+dp[i-1][j]
return dp[m-1][n-1]