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

62. 不同路径 - 力扣(LeetCode)

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

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

思路:显然达到右下角只能是从左边或者上面来,而每个位置也只能是从左边或者上面来,考虑动态规划。

解决:动态规划五步曲

        第一步:确定dp数组含义;

        题目是求到达右下角多少不同路径,所以dp应该是二维数组dp[i][j],表示到达i,j坐标位置有多少条不同路径。

        第二步:确定递推公式;

        每个位置也只能是从左边或者上面来,所以达到i,j位置,dp[i][j]=dp[i-1][j]+dp[i][j-1]。

        第三步:dp数组初始化;

        首先i=0时,不管j等于多少,dp[0][j]都是等于1;同样j=0时,dp[i][0]都是等于1。

        第四步:确定遍历顺序;

        依次算出起点到每个位置的有多少条不同路径,从左到右,从上到下。

        第五步:举例推导dp数组

代码:

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>>  dp(m, vector<int>(n, 0));for(int j=0;j<n;j++){dp[0][j]=1;}for(int i=0;i<m;i++){dp[i][0]=1;}for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];}
};

63. 不同路径 II - 力扣(LeetCode)

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

示例 1:

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

思路:用动态规划但是需要去掉障碍物的位置。

解决:动态规划五步曲

        第一步:确定dp数组含义;

       含义还是一样,表示到达i,j位置的路径条数。

        第二步:确定递推公式;

        dp[i][j]=dp[i-1][j]+dp[i][j-1],如果遇到障碍怎么办,也就是当前i,j位置没有路径过来,递推直接跳过。

        第三步:dp数组初始化;

      首先初始化和上题类似,但是如果障碍物在边界,那障碍物右边的都是0,或者障碍物下面的都是0;

        第四步:确定遍历顺序;

       和上题一样

        第五步:举例推导dp数组

代码:注意考虑障碍物在起点或者终点。

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) //如果在起点或终点出现了障碍return 0;vector<vector<int>> dp(m, vector<int>(n, 0));for(int j=0;j<n&&obstacleGrid[0][j] == 0;j++){dp[0][j]=1;}for(int i=0;i<m&&obstacleGrid[i][0] == 0;i++){dp[i][0]=1;}for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(obstacleGrid[i][j]==1) continue;dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m - 1][n - 1];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oj赛氪练习题

数组调整 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int k scanner.nextInt();int[] arr new int[n];for (int i 0; i < n; i) {arr[i] scanner.nextIn…

python+Qt5+sqllite 个性化单词记忆软件设计

问题描述&#xff1a; 设计一款背诵英语单词的软件。用户可以根据自己的需求导入需背诵的词库&#xff0c;并可以编辑自己的词库。背单词时有两种模式供选择&#xff1a;系统可以给出中文提示&#xff0c;用户输入对应的单词&#xff0c;也可输出单词让用户输入中文意思。系统判…

react-native实践日记--6.ReactNative 项目版本升级,0.61到0.72升级的问题记录(二)

接上一篇&#xff0c;ReactNative项目升级&#xff0c;0.61到0.72的升级问题。 在升级过程中&#xff0c;发现react-native-scrollable-tab-view这个tab插件&#xff0c;这是一个tab导航栏插件&#xff0c;可以实现切换页面、页面滚动、下拉刷新、上拉加载更多等&#xff0c;功…

二叉树的前,中,后序遍历(递归法和迭代法) Python

二叉树的前序遍历 递归法&#xff1a; # 定义二叉树节点的类 # class TreeNode: # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution:def preorderTraversal(self, root: Optional[TreeNode]) -> List[…

【pytest】执行环境切换的两种解决方案

一、痛点分析 在实际企业的项目中&#xff0c;自动化测试的代码往往需要在不同的环境中进行切换&#xff0c;比如多套测试环境、预上线环境、UAT环境、线上环境等等&#xff0c;并且在DevOps理念中&#xff0c;往往自动化都会与Jenkins进行CI/CD&#xff0c;不论是定时执行策略…

SQL解惑 - 谜题2

文章目录 一、谜题描述二、分析三、答案四、总结 一、谜题描述 创建一个记录雇员缺勤率的数据库。使用的表结构如下&#xff1a;Absenteeism 主键&#xff1a;PRIMARY KEY (emp_id, absent_date) 字段名字段类型字段中文名字段描述emp_idINTERGER雇员id-absent_dateSTRING缺勤…

【数据中台】开源项目(5)-Amoro

介绍 Amoro is a Lakehouse management system built on open data lake formats. Working with compute engines including Flink, Spark, and Trino, Amoro brings pluggable and self-managed features for Lakehouse to provide out-of-the-box data warehouse experience,…

SQL优化的面试题

1. **针对慢查询进行性能优化**&#xff1a; - 使用数据库提供的工具&#xff08;如MySQL的EXPLAIN语句&#xff09;分析查询计划&#xff0c;找出潜在的性能问题。 - 优化查询语句的结构&#xff0c;确保索引被充分利用。 - 对于大表&#xff0c;考虑分页或缓存部分结…

6-2 统计大于等于平均分人数

函数 fun 的功能是&#xff1a;从m个学生的成绩中统计出高于和等于平均分的学生人数&#xff0c; 此人数由函数值返回。平均分通过形参传回&#xff0c;输入学生成绩时&#xff0c; 用-1结束输入&#xff0c;由程序自动统计学生人数。 函数接口定义&#xff1a; int fun ( fl…

【无标题】AttributeError: module ‘gradio‘ has no attribute ‘outputs‘

问题描述 AttributeError: module gradio has no attribute outputs 不知道作者用的是哪个gradio版本&#xff0c;最新的版本报错AttributeError: module gradio has no attribute outputs &#xff0c; 换一个老一点的版本会报错AttributeError: module gradio has no attribu…

软件工程(9-10章、11章、12章、13章小测)参考答案

软件工程9-10章小测 一 单项选择题(8分) 1、软件体系结构定义为&#xff08;&#xff09;&#xff08;1分&#xff09; {component, connector, configuration} {models, connector} {object, collaboration, message, } 正确答案&#xff1a;{component, connector, config…

指针常量和常量指针的区别

文章目录 指针常量常量指针即是指针常量又是常量指针 指针常量 指针常量的本质是常量&#xff0c;表示的是 这个指针所指向的地址不能发生改变。即指针变量的值&#xff08;即地址值&#xff09;不能发生修改。但是指针所指向的那块内存里的值是可以修改的。 注意&#xff1a;…

canvas基础:绘制圆弧、圆形

canvas实例应用100 专栏提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。 canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重要的帮助。 文章目录 arc…

【大数据】HBase 中的列和列族

&#x1f60a; 如果您觉得这篇文章有用 ✔️ 的话&#xff0c;请给博主一个一键三连 &#x1f680;&#x1f680;&#x1f680; 吧 &#xff08;点赞 &#x1f9e1;、关注 &#x1f49b;、收藏 &#x1f49a;&#xff09;&#xff01;&#xff01;&#xff01;您的支持 &#x…

K8S客户端二 使用Rancher部署服务

Rancher容器云管理平台 本博客中使用了四台服务器&#xff0c;如下 rancher服务器k8s-masterk8s-worker01k8s-worker02 一、主机硬件说明 序号硬件操作及内核1CPU 4 Memory 4G Disk 100GCentOS72CPU 4 Memory 4G Disk 100GCentOS73CPU 4 Memory 4G Disk 100GCentOS74CPU 4 …

Linux的基本指令(五)

目录 前言 tar指令(重要) 再次思考&#xff0c;为什么要打包和压缩呢&#xff1f; 实例&#xff1a;基于xshell进行压缩包在Windows与Linux之间的互传 实例&#xff1a;实现两个Linux系统之间的文件互传 bc指令 uname -r指令 重要的热键 关机与开机 扩展命令 shell及…

国际语音群呼系统的产品优势有哪些?为什么要使用国际语音群呼系统?

一、国际语音群呼系统的产品优势&#xff1a; 1.巨量群呼 支持大容量并发群呼&#xff0c;呼叫不受限制&#xff0c;充裕的线路保障造就百万级平台容量&#xff0c;可以短时间内同时拨打大量电话&#xff0c;让语音快速到达&#xff0c;大大提高发送效率&#xff1b; 2.自主…

WSL2 Linux22.04 图形化界面配置

Windows10/11 三步安装wsl2 Ubuntu20.04&#xff08;任意盘&#xff09; - 知乎 22.04需要将appxbundle改后缀名为zip,选出x64解压再改后缀名&#xff0c;再按上面文章操作 ubuntu 22.04国内镜像阿里云/163源/清华大学/中科大 WSL2 Ubuntugnome图形界面的安装血泪史&#xf…

Android12蓝牙框架

参考&#xff1a; https://evilpan.com/2021/07/11/android-bt/ https://source.android.com/docs/core/connect/bluetooth?hlzh-cn https://developer.android.com/guide/topics/connectivity/bluetooth?hlzh-cn https://developer.android.com/guide/components/intents-fi…

FL Studio Producer Edition21.0.3中文版安装详解(附下载链接)

fl studio 21中文版是Image-Line公司继20版本之后更新的水果音乐制作软件&#xff0c;很多用户不太理解&#xff0c;为什么新版本不叫fl studio 21或fl studio2024&#xff0c;非得直接跳到21.2版本&#xff0c;其实该版本是为了纪念该公司22周年&#xff0c;所以该版本也是推出…