不同路径

作者: yellowone | 来源:发表于2020-07-07 08:20 被阅读0次

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
示例:

输入:
[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]
输出: 2
解释:
3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右

这个也是动态规划,动态规划有个特点,就是从结果去考虑过程,要找到一个最优的某个路径,或者是找出所有的路径,那么他肯定是经过最接近结果的路径,再从那些路径出发,找到开始的地点,比如在这道题里面。终点是右下角,右下角有多少种走法,就是依赖上方的走法加上左方的走法。然后把这个概念推到全图。得出每个点有多少种走法都是这种方式的。
从而得出,当前走法 = 左走法+上走法的结论。

至于障碍,如果出现了障碍,说明该点的走法为0。

func main(){
    fmt.Print(uniquePathsWithObstacles([][]int{
        {0,0,0},
        {0,1,0},
        {0,0,0},
    }))
}


func uniquePathsWithObstacles(obstacleGrid [][]int) int {
    if len(obstacleGrid) <= 0 {
        return 0
    }
    row := len(obstacleGrid)
    col := len(obstacleGrid[0])
    //用来动态规划记录上左状态的,上方状态就是当前的状态,滚动数组原理
    runStatus := make([]int, len(obstacleGrid), len(obstacleGrid))
    if obstacleGrid[0][0] != 1 {
        runStatus[0] = 1
    }
    for j := 0; j < col; j++ {
        for i := 0; i < row; i++ {
            if obstacleGrid[i][j] == 1 {
                runStatus[i] = 0
                continue
            }
            if i > 0 && obstacleGrid[i-1][j] == 0 {
                runStatus[i] += runStatus[i-1]
            }
        }
    }
    return runStatus[len(runStatus)-1]
}

相关文章

  • 不同路径

    一个机器人位于一个 *m x n *网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或...

  • 不同的路径

    LeetCode题目链接有一个机器人的位于一个 m × n 个网格左上角。机器人每一时刻只能向下或者向右移动一步。...

  • 不同路径

    一个机器人位于一个 *m x n *网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或...

  • 不同路径

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/uniq...

  • 不同路径

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右...

  • 不同路径

    题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能...

  • 不同路径

    题目描述: 一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向...

  • 关于URL路径

    ajax 发请求时,所带的路径可以是绝对路径也可以是相对路径,不同的路径浏览器会有不同的拼接方式 当请求路径为相对...

  • Python小白 Leetcode刷题历程 No.61-N

    Python小白 Leetcode刷题历程 No.61-No.65 旋转链表、不同路径、不同路径Ⅱ、最...

  • 不同产品不同运营路径

    ❤每天带你学点社群营销知识~ 不同的产品业务类型,有不同的运营路径和逻辑。 直接面向用户售卖某种商品或服务获得盈利...

网友评论

    本文标题:不同路径

    本文链接:https://www.haomeiwen.com/subject/cnboqktx.html