前言
刷水题度日
正文
问题来源
本问题来自leetcode上的63题。
问题描述
一个机器人位于一个 m x n 网格的左上角 。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
示例 1
输入:
[
[0,0,0],
[0,1,0],
[0,0,0]
]
输出: 2
分析:
func uniquePathsWithObstacles(obstacleGrid [][]int) int {
if nil == obstacleGrid {
return 0
}
li := len(obstacleGrid)
d := make([][]int, li)
lj := len(obstacleGrid[0])
var i int
var j int
for i = range d {
d[i] = make([]int, lj)
}
if obstacleGrid[0][0] == 0 {
d[0][0] = 1
} else {
d[0][0] = 0
}
for i = 1; i < li; i++ {
if obstacleGrid[i][0] == 0 {
d[i][0] = d[i-1][0]
} else {
d[i][0] = 0
}
}
for j = 1; j < lj; j++ {
if obstacleGrid[0][j] == 0 {
d[0][j] = d[0][j-1]
} else {
d[0][j] = 0
}
}
for i = 1; i < li; i++ {
for j = 1; j < lj; j++ {
if obstacleGrid[i][j] == 0 {
d[i][j] = d[i-1][j] + d[i][j-1]
} else {
d[i][j] = 0
}
}
}
return d[li-1][lj-1]
}
总结:
水一水
结语
不要懒,多看多写。