题解 | #挤奶路径#

挤奶路径

https://www.nowcoder.com/practice/6ab56cedae0646e19fb64b8bdbad82a6

  • 题目考察的知识点 : 动态规划
  • 题目解答方法的文字分析:
  1. 用一个二维 DP 数组 dp 来记录从起点到达每个位置的路径数
  2. 需要初始化 dp[0][0] 为 1,表示从起点出发只有一种走法。对于第一行和第一列的位置(即 i=0 或 j=0),由于它们只能向下或向右移动,因此也都只有一种走法,应该将其初始化为 1。
  3. 起点到达位置 (i, j) 的路径数等于从上方 (i-1, j) 和左侧 (i, j-1) 到达该位置的路径数之和。需要注意的是,在计算 dp[i][j]时,应该先判断当前位置是否是障碍物。最后,dp[m-1][n-1] 就是从起点到达右下角的路径总数
  • 本题解析所用的编程语言: Python
  • 完整且正确的编程代码

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param cows int整型二维数组
# @return int整型
#
class Solution:
    def uniquePathsWithObstacles(self, cows: List[List[int]]) -> int:
        m, n = len(cows), len(cows[0])
        dp = [[0] * n for _ in range(m)]
        dp[0][0] = 1 if cows[0][0] == 0 else 0

        # 初始化第一行和第一列
        for i in range(1, m):
            dp[i][0] = dp[i - 1][0] if cows[i][0] == 0 else 0
        for j in range(1, n):
            dp[0][j] = dp[0][j - 1] if cows[0][j] == 0 else 0

        # 动态规划
        for i in range(1, m):
            for j in range(1, n):
                if cows[i][j] == 0:
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

        return dp[m - 1][n - 1]
牛客高频top202题解系列 文章被收录于专栏

记录刷牛客高频202题的解法思路

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 13:15
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务