编程题—不同路径

简单编程题目连载(八)——最短路径问题 最短路径 阅读详情


题目链接

不同路径I
题目描述
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?

在这里插入图片描述

示例 1:
输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向右 -> 向下
2. 向右 -> 向下 -> 向右
3. 向下 -> 向右 -> 向右
示例 2:

输入: m = 7, n = 3
输出: 28

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目解析

1、使用动态规划
2、dp[i][j]=dp[i-1][j]+dp[i][j-1]
3、最左边和最上边的初始值都为1

通过代码
class Solution {
    public int uniquePaths(int m, int n) {
        if (m==0||n==0) return 0;
        if (m==1||n==1) return 1;
        int[][] tab = new int[n][m];
        tab[0][0]=1;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if (i==0) tab[i][j]=tab[i][0];//处理第一行
                else if(j==0){
                    tab[i][j]=tab[i-1][j];
                }else{
                    tab[i][j]=tab[i][j-1]+tab[i-1][j];
                }
            }
        }
        return tab[n-1][m-1];
    }
}
不同路径II
题目描述
网格中的障碍物和空位置分别用 1 和 0 来表示。

说明:m 和 n 的值均不超过 100。

示例 1:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目解析

1、通过观察可以发现,障碍物出能到达的路径数为0
2、只需要在第一题的基础上先进行判断,如果有障碍物直接置0,不需要dp
3、对于边界值特殊处理即可,例如第一个位置就有障碍物

通过代码
class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
    	if (obstacleGrid[0][0]==1) return 0;
    	int[][] flag = new int[obstacleGrid.length][obstacleGrid[0].length];
    	for(int i=0;i<obstacleGrid.length;i++) {
    		for(int j=0;j<obstacleGrid[0].length;j++) {
        		if ((i==0)&&(j==0)) flag[i][j]=1;
        		else if (i==0) {
        			if (obstacleGrid[i][j]==1)
        			flag[i][j]=0;
        			else flag[i][j]=flag[i][j-1];
        		}else if (j==0) {
        			if (obstacleGrid[i][j]==1)
            			flag[i][j]=0;
            			else flag[i][j]=flag[i-1][j];
        		}
        		else {
        			if (obstacleGrid[i][j]==0)
            			flag[i][j]=flag[i-1][j]+flag[i][j-1];
            			else flag[i][j]=0;
        		}
        	}
    	}
    	return flag[obstacleGrid.length-1][obstacleGrid[0].length-1];
    }
}
免Root抓包神器Packet Capture:安卓App数据捕获全攻略 本文详细介绍了免Root安卓抓包神器Packet Capture的安装与使用全攻略。通过利用安卓系统的VPN Service API,该工具无需Root权限即可捕获并解密App的HTTP/HTTPS网络流量。文章从核心原理、证书安装、实战抓包步骤到结果分析与常见问题排查,提供了完整指南,是移动端开发、安全测试和数据分析的实用利器。 阅读详情

相关推荐

OpenHarmony系统参数权限配置避坑指南:从param get/set失败到SELinux标签实战

本文深入解析OpenHarmony系统参数权限配置的常见问题与解决方案,涵盖DAC和SELinux双重权限控制机制。通过实战案例演示如何配置`param get/set`权限,解决'Permission denied'错误,并提供三方应用访问参数的安全方案,帮助开发者高效完成系统调试与优化。

weixin_27013291的博客 448

目标目录非空,而且似乎未包含以前编译的应用程序。请手动删除它,或选择其他目标目录...

今天编译项目时出现这个“Error 1 目标目录非空,而且似乎未包含以前编译的应用程序。请手动删除它,或选择其他目标目录。”,搞了半天,将项目文件全部删除重新在SVN上获取还是不行,换了个文件目录同步项目文件也不行,最后试了好多方法,终于找到问题的所在,将那个出错的项目的项目文件(项目.csproj)用文本文件打开,找到里面有一个Target的配置项,将其子项MakeDir和 AspNetComp...

weixin_33965305的博客 554

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 发表位置 ECCV 2020 摘要 作者提出了一种基于得分的黑盒Square attack,该模型不依赖于模型的局部梯度信息,因此可以绕过梯度隐藏防御攻击。Square Attack是一种随机搜索方法,它在随机位置选择局部的方形更新,使得每次迭代时扰动近似位于可行集的边界。 背景 当涉及到对安全至关重要的机器学习应用时,对抗性的例子尤其值得

yayayamaomaoya的博客 2493

编程练习题:矩阵中的路径

矩阵中的路径 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[abcesfcsadee]\left[\begin{matrix} a & b & c &e \\ s & f & c &s\\ a & d & e & e \end{matri

real_coding的博客 343

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 370

生成式深度学习(第二版)-第一章-Conda环境下TensorFlow和Keras的安装和配置

按照书籍中的代码运行提示,需要配置Docker。个人的机器上正好有 conda4.14.0,索性就在本地环境进行配置。

GarryWang1248的博客 398

C/C++编程题刷题:leetcode 62. 不同路径 和 63. 不同路径 II

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

Emotion的博客 507

世界模型和大语言模型结合开发自动驾驶算法

摘要:自动驾驶系统开发中,融合世界模型和大语言模型可显著提升效率和安全性。世界模型负责环境感知与预测(如目标检测、轨迹预测),而大语言模型优化代码生成、决策解释等环节。实施路径包括需求分析(1-2周)、模型开发(2-4个月)、模拟测试(1-2个月)、实车测试(2-3个月)和合规优化(1-2个月),总周期6-12个月。关键技术工具包括PyTorch/TensorFlow、CARLA模拟器和ROS系统,核心设计理念强调模块化、安全优先和敏捷迭代。示例代码展示了YOLO目标检测与大语言模型决策建议的集成方案。该方

ponygame的博客 826

Leetcode 980. 不同路径 III

980.不同路径 III 显示英文描述 我的提交返回竞赛 用户通过次数42 用户尝试次数43 通过次数46 提交次数60 题目难度Hard 在二维网格grid上,有 4 种类型的方格: 1表示起始方格。且只有一个起始方格。 2表示结束方格,且只有一个结束方格。 0表示我们可以走过的空方格。 -1表示我们无法...

weixin_30507481的博客 86

Buck-Boost电路

前面我们学习了降压的Buck电路 (左图) 和升压的Boost电路 (右图),那么如果我们把Buck电路和Boost电路结合一下会发生什么情况? 我们尝试着画一下: 我们用Buck电路作为输入,然后用Boost电路进行调整,最后输出。因此Buck电路中的负载、Boost电路的电源都可以删掉。得到下图: 由于Buck电路中的C2的作用是在输出的时候滤波,这个功能已经由Boost电路中的C1实现了,因此可以删除Buck电路中的C2电容。得到下图: 这里两个电感处于串联状态,可以合二为一,得到下面的电路:

wangeil007的博客 4万+

npm报错 npm WARN deprecated....的问题解决方式

报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i.

任聪聪的博客 16万+

随想录训练营34/60 | LC 62.不同路径;LC 63. 不同路径 II

之前的DP数组都是一维的;也是先举一个小例子,发现第一行和第一列都是1;然后第二行第二列开始为前一个数和上一个数之和,后面都是这样,因此遍历除第一行和第一列的数组就好。:按照上题思路,然后将障碍物的位置dp设置为0。注意初始化的时候,若遇到障碍物,则后面的不用初始化为1,直接break。

weixin_43845977的博客 402

使用 MATLAB/Simulink + Simscape Electrical 构建一个他励直流电机的启动与制动过程仿真模型

直流电机在工业控制、电动车辆、自动化设备中广泛应用。其中,他励直流电机(Separately Excited DC Motor)因其励磁绕组与电枢绕组分别供电,具有良好的调速性能和启动特性,常用于需要平稳启动和精确控制的场合。在实际应用中,电机的启动过程和制动过程对电网、机械系统以及电机本身都具有重要影响。因此,仿真分析他励直流电机的启动与制动特性,是电机控制设计的重要环节。本文将详细介绍如何使用构建一个他励直流电机的启动与制动过程仿真模型,并通过仿真分析其动态响应。本文详细介绍了如何使用构建一个。

amy_mhd的博客 231

算法编程题: 矩阵的最小路径和

算法编程题: 矩阵的最小路径和 题目描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。 输入描述: 第一行输入两个整数 n 和 m,表示矩阵的大小。 接下来 n 行每行 m 个整数表示矩阵。 输出描述: 输出一个整数表示答案。 示例1 输入 4 4 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 输出 12 备注: 1 \leq n, m \leq 20001≤n,m≤2000

weixin_43368548的博客 920

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

9.10 深信服笔试记录

笔试有填空题和选择题,分值不多,但是第一次做这种还是有点意思的。 大多数题目记不清了(下午的时候忘记记录了),就记录几个值得注意的点吧。 结构体struct的对齐问题 小白鼠试毒问题(我当时并没有想清楚),可以看这个思路,来自知乎: 还有一些推理问题,做多了就蛮简单的,我第一次做,花的时间有点多。 编程题1:类似leetcode的接雨水问题,但是魔改了,很坑,写半天题目意思都不太明白 编程题2:也是类似leetcode上的不同路径问题,回溯法枚举就能过 包括昨天的华为笔试,给我的感

zj 586

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

算法记录Day39|LeetCode 62.不同路径 、63. 不同路径 II

打卡LeetCode 62.不同路径 、63. 不同路径 II

miyu325的博客 347

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

力扣 不同路径(动态规划)(ACM模式详解)

力扣 62.不同路径 63.不同路径II,ACM模式下详解

qq_58785091的博客 1335

代码随想录Day39 | 62.不同路径 、 63. 不同路径 II

dp含义:走到dp[i][j]有多少种不同的路径递推公式:dp[i][j]=dp[i-1][j]+dp[i][j-1]初始化:i<m;i<n;遍历顺序:从左往右,从上往下打印。

Ethan10086的博客 123

代码随想录算法训练营第三十九天|62.不同路径、63. 不同路径 II

确定递推公式(dp(i)(j) = dp(i - 1)(j) + dp(i)(j - 1);这道题与上一道类似。区别在于判断是否有障碍,有障碍则dp数组中的值为0;确定dp数组以及下标的含义(m x n矩阵的走法)dp数组如何初始化(m或n为1则dp数组值为1)这里我们要用一个一维dp数组来保存递归的结果。

weixin_53549736的博客 101

力扣 -- 62.不同路径、63.不同路径2

力扣 -- 62.不同路径、63.不同路径2

weixin_70056514的博客 367

leetcode 62. 不同路径

leetcode 62. 不同路径 题意 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 说明:m 和 n 的值均不超过 100。 示例 1: 输入: m = 3, n ...

James_chok的博客 427

不同路径

不同路径 题目出处:https://leetcode-cn.com/problems/unique-paths/ class Solution { public: int uniquePaths(int m, int n) { vector<vector<int>> dp(m, vector<int>(n, 0)); for(int i = 0; i < m; ++i){ dp[i][0] = 1;

zaa_12346的博客 104

Leetcode 62&63&64 不同路径 Java

Leetcode 62 不同路径 这道题一看就是动态规划题,但是因为我动态规划掌握的不是很好,所以总想投机取巧,研究是否有不用DP的方法。这道题因为设置的非常简单,没有添加障碍物什么的,所以给了我用排列组合的方法&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt; 排列组合 :先贴通过的代码段 class Solution { public int uniquePaths(int m, int n) { in...

qxdPx的博客 508

C#代码随想录算法训练营day39|动态规划、不同路径

机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输入:obstacleGrid = [[0,1],[0,0]]输入:m = 3, n = 3。

weixin_44740741的博客 586

LeetCode-62- 不同路径(完整代码C语言)

LeetCode-62- 不同路径(完整代码C语言)题目示例及提示代码1(C语言)(部分样例未通过)解读 题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/unique-paths 著作权归领扣网络所有。商业转载请联系官方授权,

qq_41277628的博客 718
上一篇: 编程题—面试题56 - I. 数组中数字出现的次数
下一篇: 编程题—leetcode198、213打家劫舍i ii
code_AC
博客等级 码龄12年 255粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值