leetcode63. 不同路径 II

2023-11-03

题目:

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
在这里插入图片描述
网格中的障碍物和空位置分别用 1 和 0 来表示。
说明:m 和 n 的值均不超过 100。

示例 1:

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

  1. 向右 -> 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右 -> 向右

思路:动态规划。
  与上一题思路基本一致,多了障碍物的判断。

代码:

class Solution(object):
    def uniquePathsWithObstacles(self, obstacleGrid):
        """
        :type obstacleGrid: List[List[int]]
        :rtype: int
        """
        m = len(obstacleGrid)
        n = len(obstacleGrid[0])

        dp = [[0] * n for i in range(m)]
        if obstacleGrid[0][0] != 1:
            dp[0][0] = 1
        for i in range(1, n):
            if obstacleGrid[0][i] != 1:
                dp[0][i] = dp[0][i-1]
        for i in range(1, m):
            if obstacleGrid[i][0] != 1:
                dp[i][0] = dp[i-1][0]

        for i in range(1, m):
            for j in range(1, n):
                if obstacleGrid[i][j] != 1:
                    dp[i][j] = dp[i][j-1] + dp[i-1][j]

        return dp[m-1][n-1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode63. 不同路径 II 的相关文章

随机推荐

  • Netty入门-Channel

    目录 Channel详解 Channel的特点 Channel接口方法 ChannelOutboundInvoker接口 AttributeMap接口 ChannelHandler接口 ChannelInboundHandler接口 Cha
  • 请取件

    Part1前言 最常见的鼠标平移算法是平行于水平面 地面 的 无论相机视角如何 平移时 相机的世界Z值始终不变 因为绝大多数场景都是在观察地面上的物体 而人类的行走总是平行于地面的 但是本文要介绍的另一种小众的平移算法则平行于视锥体的截面
  • JPA使用审计功能新增时, 不自动更新@LastModifiedDate和@LastModifiedBy字段

    JPA使用审计功能新增时 不自动更新 LastModifiedDate和 LastModifiedBy字段 疑问 查询源码 解决方案 疑问 JPA使用审计功能 网上有一大堆demo 但是使用时 会发现创建的时候会自动填写 LastModif
  • Mac安装homebrew报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation

    homebrew安装时 一般直接在终端直接输入命令 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install master install 但是这个方
  • Numpy/Pytorch之数据类型与强制类型转换

    目录 1 数据类型简介 Numpy Pytorch 2 Python的type 函数 3 Numpy Pytorch的dtype属性 4 Numpy中的类型转换 先聊聊我为什么会用到这个函数 不看跳过 astype 函数 输出 4 Pyto
  • 【线性表的原地逆置】

    目录 前言 一 顺序表 数组 一 双指针 二 单链表 一 模拟顺序表的双指针 交换的节点的值域 二 头插法 改变节点的指针域 三 递归实现 将整体链表反向 整体代码 总结 前言 打怪升级第一天 大家好 今天我们来了解一下数组和单链表的原地逆
  • (mybatis驼峰命名导致映射错误)

    今天在复习mybatis时遇到这样的一个问题 我数据库表的字段和我定义的实体类名不一致 中间有下划线 如下图 实体类 数据库字段 结果会导致部分查询数据是null 于是我首先想到了自己定义一个resultmap映射 给数据库字段取一个别名
  • Android 学习之多状态布局的一种实现方案

    开发应用的过程中 首页的控件越来越多 布局文件的代码已经到了爆表的程度 而且不同状态下首页各个控件的 Visibility 不同 每次新增状态都是一件头疼的事情 时常遗漏控件导致出错 和 YYY 大佬交流讨论后他给出了一种巧妙的方案 特此学
  • 人工智能数学基础:费马引理、罗尔定理、拉格朗日微分中值定理、柯西中值定理

    一 费马 Fermat 引理 费马 Fermat 引理 设函数f x 在点x0的某邻域U x0 内有定义 并且在x0处可导 如果对任意的x U x0 有f x f x0 或f x f xo 那么f x0 0 老猿认为费马引理就是说明 对于某
  • 简单通俗易懂:一个小例子完美解释Naive Bayes(朴素贝叶斯)分类器

    更多深度文章 请关注 https yq aliyun com cloud 最简单的解决方案通常是最强大的解决方案 而朴素贝叶斯就是一个很好的证明 尽管机器学习在过去几年取得了巨大的进步 但朴素贝叶斯已被证明不仅简单 而且快速 准确 可靠 它
  • 从原理到代码实践

    文章目录 1 损失函数原理 1 1 Classification Error 分类错误率 1 2 均方差损失 1 3 交叉熵损失函数 1 3 1 数学原理 1 3 2 代码实现 对于图像分类任务 模型最终是通过softmax操作输出一个概率
  • Java: String与其他数据的相互转化

    1 java lang包中的Byte Short Long Float Double类调用相应的类方法 将由 数字 字符组成的字符序列转化为相应的基本数据类型 public static byte parseByte String s th
  • 如何制作点餐小程序?

    随着移动互联网的发展 点餐小程序的出现越来越受到大家的欢迎 它方便快捷 可以随时随地点餐 特别是在疫情期间更受到了用户的喜爱 那么 如何制作一个点餐小程序呢 下面将会简单介绍一下步骤 并通过一个具体案例来解析运用了哪些技巧提升了效果 一 确
  • 容器 - unordered_map

    unordered map是C Boost库中的内容 这里的unordered指的是散列式的存储方式 unordered库提供了两个散列映射表 unordered map和unordered multimap 利用散列表代替了二叉树的实现
  • 11. Leaf-segment 分布式ID

    Spring Cloud 微服务系列文章 点击上方合集 1 开头 当应用程序只使用单个数据库时 可以使用数据库自增的方式来生成id 这种方式既简单 查询又快 然而 当应用程序需要进行分库分表时 即将数据分散到多个数据库和数据表中 使用数据库
  • catia如何将曲面加厚变为实体_CATIA如何将片体转换为实体?

    下面介绍一种在CATIA中将片体转换为实体的方法 1 首先打开CATIA软件 再打开需要曲面操作的模型零件 2 然后进入创成式外形设计模块 在软件界面的开始菜单栏中点击开始 形状 创成式外形设计 3 接下来从实体中提取面 先使用 提取 命令
  • 设计规范-导航、弹窗、视图

    常见导航样式 根据产品的特性 导航可以混合使用 体现形式多样化 不能为了追求多样化 滥用导航类型 扁平式导航 在一级页面提供导航栏 一般处于顶部 底部 适合频繁切换的模块 方便用户在不同的模块间操作 例 微信的底部导航栏 小红书的顶部 底部
  • LADRC的学习——用simulink搭建仿真模型

    作者 墨心 时间 2019 7 25 用simulink搭建仿真模型 前面两篇博客主要讲了ADRC的相关概念和知识 并且尝试着搭建模型和仿真 之后学习了PID的相关知识 了解了Kp Ki Kd三个参数的意义 接下来 主要根据高志强教授的论文
  • java会话技术--02--服务器session共享

    java会话技术 02 服务器session共享 1 原理图 2 代码实现 2 1 接口代码 package cn zhou common web session import java io Serializable import jav
  • leetcode63. 不同路径 II

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