package dynamicprogramming
import (
"fmt"
"testing"
)
func TestDiffPathII(t *testing.T) {
fmt.Println(uniquePathsWithObstacles([][]int{{0, 0, 0}, {0, 1, 0}, {0, 0, 0}}))
}
func uniquePathsWithObstacles(obstacleGrid [][]int) int {
if obstacleGrid[0][0] == 1 {
return 0
}
dp := make([][]int, len(obstacleGrid))
for i := range dp {
dp[i] = make([]int, len(obstacleGrid[i]))
}
dp[0][0] = 1
for i := 1; i < len(obstacleGrid); i++ {
if obstacleGrid[i][0] == 1 {
dp[i][0] = 0
} else {
dp[i][0] = dp[i-1][0]
}
}
for i := 1; i < len(obstacleGrid); i++ {
if obstacleGrid[0][i] == 1 {
dp[0][i] = 0
} else {
dp[0][i] = dp[0][i-1]
}
}
for i := 1; i < len(obstacleGrid); i++ {
for j := 1; j < len(obstacleGrid[i]); j++ {
if obstacleGrid[i][j] == 1 {
dp[i][j] = 0
} else {
dp[i][j] = dp[i-1][j] + dp[i][j-1]
}
}
}
return dp[len(dp)-1][len(dp[0])-1]
}
LeetCode63 不同路径II
最新推荐文章于 2024-09-27 11:50:10 发布