牛客网_leetcode_unique-paths-ii(动态规划)

本文探讨了在存在障碍的情况下寻找从起点到终点的不同路径数量的算法问题。通过对UniquePaths问题的深入分析,提出了一种解决方案,该方案通过调整网格中的值来标记障碍并计算可能的路径。然而,该方法在极端情况下遇到挑战,如当起始位置即为障碍时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
继续思考题目"Unique Paths":
如果在图中加入了一些障碍,有多少不同的路径?
分别用0和1代表空区域和障碍
例如
下图表示有一个障碍在3*3的图中央。
[
[0,0,0],
[0,1,0],
[0,0,0]
]
有2条不同的路径
备注:m和n不超过100.

解答:先上代码:

#
# 
# @param obstacleGrid int整型二维数组 
# @return int整型
#
class Solution:
    def uniquePathsWithObstacles(self , obstacleGrid ):
        # write code here
        m = len(obstacleGrid)
        n = len(obstacleGrid[0])
        for i in range(m):
            for j in range(n):
                obstacleGrid[i][j] = 1 - obstacleGrid[i][j]
        for i in range(1, m):
            for j in range(1, n):
                obstacleGrid[i][j] = (obstacleGrid[i-1][j] + obstacleGrid[i][j-1])*(obstacleGrid[i][j])
        return obstacleGrid[-1][-1]
        

这道题,思路就是这么个思路,碰上障碍点,直接把障碍处的值置零,以上代码通过了60%的测试案例,但是leetcode吧有个问题,总是考虑极端情况,他设置obstacleGrid为[[1,0]],结果答案直接为0,这就不是考算法了,就有点钻牛角尖的感觉了,思路没有问题,这道题就这样了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值