Leetcode算法——63、不重复路径II(unique paths II)

AutoDock Vina实战:从零开始完成分子对接(附7VU6案例详解) 本文提供了一份详细的AutoDock Vina分子对接实战指南,以SARS-CoV-2 3CL蛋白酶(PDB ID: 7VU6)为例,从零开始手把手教学。内容涵盖软件安装、环境配置、受体与配体文件准备、对接参数设置,以及结果分析与可视化解读,旨在帮助计算生物学与药物发现领域的新手快速掌握这一核心技能。 阅读详情

一个机器人位于一个m*n的网格的左上角。

它每次只能向下或向右移动一格。它试图到达网格的右下角。

网格中有一些障碍物,机器人不能通过。

求有多少种不重复的路径?

备注:
1、m 和 n 都不大于 100.
2、障碍物和空地分别被标为 1 和 0。

示例:

Input:
[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]
Output: 2
Explanation:
There is one obstacle in the middle of the 3x3 grid above.
There are two ways to reach the bottom-right corner:
1. Right -> Right -> Down -> Down
2. Down -> Down -> Right -> Right

思路

本题与 Leetcode算法——62、不重复路径(unique paths) 很相似,不同之处在于本题多了障碍物,因此不能通过使用数学法转换为纯粹的排列组合问题。

可以使用动态规划法。

设左上角坐标为(0,0),右下角坐标为(m,n)。记走到 (i,j) 的路径数为 dp(i,j),则:
1、如果 (i,j) 位置是障碍物,则 dp(i,j) = 0。
2、如果 (i,j) 位置不是障碍物,则 dp(i,j) = dp(i-1,j) + dp(i,j-1)。

python实现

def uniquePathsWithObstacles(obstacleGrid):
    """
    :type obstacleGrid: List[List[int]]
    :rtype: int
    """
    if not obstacleGrid or obstacleGrid[0][0] == 1:
        return 0
    m = len(obstacleGrid)
    n = len(obstacleGrid[0])
    dp = [[0] * n for _ in range(m)]
    dp[0][0] = 1 # 起始点,一种路径
    for i in range(0, m):
        for j in range(0, n):
            if obstacleGrid[i][j] == 0: # 当前位置没有障碍物
                if i > 0:
                    dp[i][j] += dp[i-1][j]
                if j > 0:
                    dp[i][j] += dp[i][j-1]   
    return dp[-1][-1]
    
if '__main__' == __name__:
    obstacleGrid = [
            [0,0,0],
            [0,1,0],
            [0,0,0]
            ]
    print(uniquePathsWithObstacles(obstacleGrid))
树根互联Java开发面试题及参考答案 说一下 Java 集合类。 Java 集合类是用于存储和操作一组对象的容器。它提供了多种数据结构,方便程序员对数据进行高效的管理和处理。 Java 集合框架主要包括两大接口:Collection 和 Map。 Collection 接口是一组对象的集合,它有三个主要的子接口:List、Set 和 Queue。 List 接口代表有序的集合,可以包含重复的元素。例如 ArrayList,它是基于数组实现的动态数组。它的优点是随机访问效率高,通过索引访问元素的时间复杂度为 O (1)。当 阅读详情

相关推荐

【现代电路理论】【2】考尔法设计无源单口网络

夏 弥:其实你在冰面上看到鱼浮上来 明年冬天如果你还在那里,那鱼还是会上来换气 那时候你就可以带一把冰镐 把冰面砸开把鱼捞上来熬汤

痛苦的时候装出幸福相,这不是那么难做到的事 2886

机器人路径问题

机器人路径问题 首先来看一下问题:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 分析: 首先机器人从左上角(0,0)开始向右下角运动,每次机器人只能向右或者向下运动。 第一种方法:深度搜索(不可用,时间复杂度过大) 如图所示,将机器人向右移动看成是右子树,向下移动看成是左子树,求机器人的路径即求二叉树的叶子节点的个数,用深度

weixin_45975835的博客 1719

华为EC6108V9E刷机实战:从U盘准备到开机优化的完整避坑指南

本文提供华为悦盒EC6108V9E刷机与优化的完整实战指南。针对搭载RK3228芯片和安卓4.4.4系统的设备,从型号确认、固件选择、U盘准备,到详细刷机步骤、常见故障排除,以及刷机后的深度性能优化,手把手帮助用户规避风险,让旧盒子焕发新生,成为流畅的全能媒体中心。

weixin_29324401的博客 1193

1118 机器人走方格 DP 或者组合数+逆原

M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。 Input 第1行,2个数M,N,中间用空格隔开。(2  Output 输出走法的数量。 Input示例 2 3 Output示例 3 第一种做法是用dp,dp【i】【j

Little_boy_z的博客 389

在统信UOS Server 20上踩坑记:手把手教你搞定openGauss 5.0.0企业版安装(附常见报错解决方案)

本文详细记录了在统信UOS Server 20上安装openGauss 5.0企业版的实战经验,包括环境准备、依赖库问题、目录权限、内存参数调优等常见问题的解决方案。通过伪装系统标识、建立软链接、调整内存参数等方法,成功克服国产操作系统与企业级数据库的兼容性挑战,为开发者提供了一份深度排雷指南。

weixin_28698059的博客 264

Pdu Router(PduR)模块

1. PduR路由基本功能 2. PduR总线网关功能 3. PduR缓存机制 4. 总结

weixin_43759043的博客 3850

21Nod 1118 机器人走方格 【简单dp】

21Nod 1118 机器人走方格 【简单dp】 M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。 输入 第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000) 输出 输出走法的数量。 输入样例 2 3 输出样例 3 拿到题目就知道...

qq_28640193的博客 244

AMDGPU IH(Interrupt Handler)实现分析

AMDGPU IH环形缓冲区机制是显卡驱动中高效处理GPU硬件中断的核心架构。该机制通过环形缓冲区存储中断事件,利用读写指针(wptr/rptr)同步硬件与驱动间的数据交互。硬件写入事件后驱动遍历处理,通过指针掩码实现环形循环,并具备溢出检测和虚拟化环境下的重置保护。其优势在于批量处理降低中断开销,指针同步确保可靠性,支持多队列扩展和SR-IOV虚拟化场景,为GPU中断管理提供了高性能基础架构。

图形/计算GPU的驱动与虚拟化技术分享园地 1639

Leecode刷题笔记——62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 向右...

Tyxxxxxx 240

使用Python实现卷积神经网络(CNN)

卷积神经网络是一种专门用于处理具有网格状拓扑结构数据(如图像、声音)的深度学习模型。CNN的核心组件是卷积层和池化层,它们能够有效地从图像中提取特征并实现空间不变性,使得模型能够对图像中的物体进行识别和分类。我们定义一个简单的卷积神经网络模型,包括卷积层、池化层和全连接层。return x# 创建模型实例我们选择交叉熵损失函数作为分类任务的损失函数,并使用随机梯度下降(SGD)作为优化器。

Echo_Wish 4489

YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml

全网最详细的YOLOv5源码解读之配置文件yaml。逐行注释,逐句讲解,一文带你了解yaml。小白必看!

路人贾的博客 1万+

LeetCode 62. Unique Paths C++

Problem 题目链接 Solution 题意为给你一个n行m列的棋盘,左上角的格子里有一个机器人,机器人每次只能向右或者向下走一步,问走到右下角的格子上有几种走法。 很明显是动态规划的题,设dp[i][j]是走到(i,j)这个格子的走法总数,那么其值就为dp(i-1,j)dp(i,j-1)两数之和(此处i-1、j-1需合法) 考虑边界情况,即i1或j1时,因为只能向下或向右走,所以这些格子都是...

dong的博客 229

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LeetCode | 63. Unique Paths II

63. Unique Paths II Description 描述:https://leetcode.com/problems/unique-paths-ii/description/ 题意:m列 × n行 的有障碍物的网格,从左上角第一个到右下角最后一个(只能往右和下这两个方向走),有多少条不重复的路径 Solution: (Java) class Solution { public ...

Karmen199x的博客 205

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LeetCode - 63. Unique Paths II(有障碍物的不同路径)

LeetCode-63. Unique Paths II(有障碍物的不同路径) 记忆化 二维dp 一维dp 题目链接 题目 记忆化 其实这类题目都是比较套路的,例如LeetCode62,就是一点点改造而已。 记忆化就是递归加上一个二维数组的记录: public int[][] map; public int uniquePathsWithOb...

zxzxin的博客~ 1338

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

63. Unique Paths II and 64. Minimum Path Sum

文章目录1 63 Unique Paths II1.1 题目描述1.2 动态规划解决2 64. Minimum Path Sum2.1 题目理解2.2 动态规划 这一遍刷dp的题目就很轻松了。 1 63 Unique Paths II 1.1 题目描述 A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below). The robot can only move either d

约定的博客 413

LeetCode 62. Unique Paths LeetCode 63 Unique Paths II 不同的路径之二

初识动态规划。格点(i,j)。由于只能从上格点(i-1,j)或左格点(i,j-1)到达,并且两者路径是不重复的因此path[i][j] = path[i-1][j]+path[i][j-1]。最近要开始看动态规划了。class Solution { public: int uniquePaths(int m, int n) { vector&lt;vector&lt;int...

momo_mo520的博客 267

【Leetcode】63. Unique Paths II

跟62. Unique Paths 题大致相同。只不过路径上有障碍物,不能经过障碍物。 考虑dp[i][j],如果该格子有障碍物,那么dp[i][j] = 0,否则 dp[i][j] = dp[i-1][j] + dp[i][j-1]. 这样做的好处就是不用管左边或者上面的格子是否有障碍物,有的话其对应的dp值为0. 方法1 DP法 class Solution: def unique...

很吵请安静 412

Leetcode-63. Unique Paths II

前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发优快云,mcf171专栏。 博客链接:mcf171的博客 —————————————————————————————— Follow up for "Unique Paths"

mcf171的专栏 225

leetcode 63. 不同路径 II(Unique Paths II)

目录 题目描述: 示例 1: 解法: 题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角...

weixin_30443747的博客 221

LeetCode--62. Unique Paths & 63. Unique Paths II

题目链接:https://leetcode.com/problems/unique-paths/和https://leetcode.com/problems/unique-paths-ii/ 从(0,0)到达(m-1,n-1)的路径总数,第二问路上有障碍物。 问题一思路一:DFS暴力搜索 class Solution { public static int number; ...

To_be_thinking的博客 251

leetcode 63 Unique Paths II

class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(), n = obstacleGrid[0].size(); vector<vecto...

qq_35985044的博客 163

LeetCode 62.63. Unique Paths(不同路径)

Unique Paths(不同路径)题目 解析 思路: 拿到这个题目有两种思路,递归和动归。下面分析两种方法的选择理由和可行性。 递归:递归一般用于处理题目中有重复出现的选择和判断的情况,可以套用相同的方法来解决。递归的优点是可以应对各种输入的变化,实现完全的枚举以及剪枝操作。但是当情况复杂的时候,可能会申请过多的空间造成超时或者空间不足,在空间使用很大的情况下也会影响到时间的。在这题可以用递归...

马一凡的博客 279

leetcode-63. Unique Paths II · DP + vector

题面 A robot is located at the top-left corner of amxngrid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach ...

yocichen 109

LeetCode-63-Unique Paths II(动规)-Medium

题目理解: 1. 同63(Unique Paths); 2. 增加限制条件:有障碍的地方不能通过; 题目分析: 添加障碍位置判断处理逻辑; 解题代码: public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int row=obstac

eddy_liu的专栏 717

leetcode-62&63 Unique Paths I & II

一,第62题,unique paths I A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The robot is tr

evolone的专栏 516

LeetCode 63. Unique Paths II(独立路径)

原题 A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the ...

Dby_freedom的博客 359
上一篇: Leetcode算法——62、不重复路径(unique paths)
下一篇: Leetcode算法——64、最小路径之和(minimum path sum)
HappyRocking
博客等级 码龄12年 222粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值