代码随想录打卡第四十二天| ● 62.不同路径 ● 63. 不同路径 II

news2025/1/22 21:55:37

62 不同路径

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

  1. 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向下
    示例 3:
    输入:m = 7, n = 3
    输出:28
    示例 4:
    输入:m = 3, n = 3
    输出:6
    解题思路:
    **方法一:**动态规划 二维方法
    1.定义dp数组
    dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径
    2.定义递推公式
    确定推导过程 dp[i][j]=dp[i-1][j]+dp[i][j-1]
    3.初始化
    for(i = 0 ; i < m ; i++ ){
    dp[i][0]=1;
    }
    for(j=0 ; j<n ; j++){
    dp[0][j]=1;
    }
    4.遍历顺序
    从左上到右下
    代码如下:
public static int uniquePaths(int m, int n) {
        int[][] dp = new int[m][n];
        //初始化
        for (int i = 0; i < m; i++) {
            dp[i][0] = 1;
        }
        for (int i = 0; i < n; i++) {
            dp[0][i] = 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];
    }

**方法一:**动态规划 一维方法
一维方法是二维数组滚动数组
1.定义dp数组
dp[n]表示第i行n处的路径数
在遍历过程中 每遍历一行 dp[n] 都会被更新
2.定义递推公式
dp[i]=dp[i]+dp[i-1]
现在要确定下一行的值(新的dp[i]) 其实在二维数组中是 加上数组正上方和左边的值 正上方的值就是上一行的值dp[i] 左边的值就是更新后的dp[i-1]
i从1开始遍历更新 因为新一行的dp[0]=1(二维数组初始化时 第一列初始化为1)
3.初始化
for (int i = 0; i < n; i++) dp[i] = 1;
4.遍历顺序
从左上到右下
代码如下

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

63. 不同路径 II

**解题思路:**与不同路径I很相似 但如果有障碍物 需要将这个坐标的方法数置为0
题目:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。
示例1:
在这里插入图片描述
示例2:
在这里插入图片描述
题目链接:63. 不同路径 II

代码如下:

//初始化dp数组明白含义 从出发点到ij点的方法个数
//确定推导过程 dp[i][j]=dp[i-1][j]+dp[i][j-1]
//初始化
//确定遍历
class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        //特殊情况
        if(obstacleGrid[0][0]==1 || 
        obstacleGrid[obstacleGrid.length-1][obstacleGrid[0].length-1]==1){
            return 0;
        }
        int dp[][]=new int[obstacleGrid.length][obstacleGrid[0].length];
        int i,j;
        //初始化
        for(i = 0; i < obstacleGrid.length&&obstacleGrid[i][0] == 0; i++){
            dp[i][0]=1;
        }
        for(j= 0; j < obstacleGrid[0].length&&obstacleGrid[0][j] == 0; j++){
            dp[0][j]=1;
        }
        for(i = 1;i < obstacleGrid.length;i++){
            for(j = 1;j < obstacleGrid[0].length;j++){
                if(obstacleGrid[i][j]==0){
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
                }
                else{
                    dp[i][j]=0;
                }
            }
        }
        return dp[i-1][j-1];
    }
}

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

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

相关文章

收银系统哪个好 2023年十大收银软件品牌排行榜

根据2023年的最新数据和市场调研&#xff0c;以下是收银系统十大排名&#xff08;2023年十大收银软件品牌排行榜&#xff09;&#xff1a; 商人宝 一款集成了收银系统、会员管理、进销存和数据分析等多个功能的服装店收银软件&#xff0c;适用于服装卖场、中小型连锁超市、便利…

RunnerGo UI自动化使用体验

RunnerGo怎么做UI自动化 首先需要进入官网&#xff0c;RunnerGo支持开源&#xff0c;可以自行下载安装&#xff0c;也可以点击右上角体验企业版按钮快速体验 点击体验企业版进入工作台后可以点击页面上方的UI自动化 进入到测试页面 创建元素 我们可以在元素管理中创建我们测试…

企业文件防泄密软件!好用的文件加密系统推荐

由于众多企业内部都有大量的机密数据以电子文档的形式存储着&#xff0c;且传播手段多样&#xff0c;很容易造成文件泄密的问题发生。若是员工通过网络泄密重要文件&#xff0c;或是有黑客入侵窃取机密数据等&#xff0c;造成重要文件被非法查看盗取&#xff0c;都会给企业业务…

ROS 物体跟踪示例

物体跟踪与物体识别有相似之处&#xff0c;同样使用特征点检测的方法&#xff0c;但侧重点并不相同。物体识别针对的物体可以是静态的或动态的&#xff0c;根据物体特征点建立的模型作为识别的数据依据&#xff1b;物体跟踪更强调对物体位置的准确定位&#xff0c;输入图像一般…

2.2 如何使用FlinkSQL读取写入到文件系统(HDFS\Local\Hive)

目录 1、文件系统 SQL 连接器 2、如何指定文件系统类型 3、如何指定文件格式 4、读取文件系统 4.1 开启 目录监控 4.2 可用的 Metadata 5、写出文件系统 5.1 创建分区表 5.2 滚动策略、文件合并、分区提交 5.3 指定 Sink Parallelism 6、示例_通过FlinkSQL读取kafk…

力扣:133. 克隆图(Python3)

题目&#xff1a; 给你无向连通图中一个节点的引用&#xff0c;请你返回该图的深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node {public int val;public Lis…

Excel提高工作效率常用功能

定位快捷键使用 CtrlG或者F5 根据不同类别插入空行 例&#xff1a;以下表&#xff0c;以部门为单位&#xff0c;每个部门后插入空白行 部门姓名出勤基本工资岗位津贴公体加班绩效基数工龄应发合计财务部姓名73115002101710财务部姓名11116006003401502363财务部姓名5271000…

求解八皇后问题

一、实验目的 利用回溯法搜索或爬山法找到八皇后问题的一个可行解。 二、实验内容 有一个 8 8 的棋盘&#xff0c;现在要将8个皇后放到棋盘上&#xff0c;满足&#xff1a;对于每一个皇后&#xff0c;在 自己所在的行、列、两个对角线都没有其他皇后。求所有满足的摆放方式…

大模型技术实践(五)|支持千亿参数模型训练的分布式并行框架

在上一期的大模型技术实践中&#xff0c;我们介绍了增加式方法、选择式方法和重新参数化式方法三种主流的参数高效微调技术&#xff08;PEFT&#xff09;。微调模型可以让模型更适合于我们当前的下游任务&#xff0c;但当模型过大或数据集规模很大时&#xff0c;单个加速器&…

基于springboot实现酒店管理系统平台项目【项目源码+论文说明】

摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

Flow深入浅出系列之在ViewModels中使用Kotlin Flows

Flow深入浅出系列之在ViewModels中使用Kotlin FlowsFlow深入浅出系列之更聪明的分享 Kotlin FlowsFlow深入浅出系列之使用Kotlin Flow自动刷新Android数据的策略 Flow深入浅出系列之在ViewModels中使用Kotlin Flows Flow出现后&#xff0c;LiveData仍然可以用&#xff0c;并且…

基于springboot实现家具网站设计与实现平台项目【项目源码+论文说明】

摘要 随着移动互联网技术的深入发展&#xff0c;电子商务也不断的完善&#xff0c;线上销售额不断提高&#xff0c;网络消费成为人民日常生活的一部分。并且随着电子商务的发展&#xff0c;也呈现出多元化方向&#xff0c;各种农村电商、生鲜电商、家具电商等&#xff0c;带动…

AI 悄然变天:这家平台为何能俘获众多明星大模型「芳心」?

整个AI领域&#xff0c;GPT-4 发布无疑成为载入 AI 史册的大事件。但其还留下来一些发展空间&#xff0c;其不可能把所有的事情都做完。比如&#xff0c;涉及小数、分数的运算&#xff0c;GPT-4 可能给不出正确答案&#xff08;其多位乘法运算准确率仅为 4.3%&#xff09;。 可…

变电站监控无人值守:电力数字化、智能化趋势、技术与应用

随着电力行业的快速发展&#xff0c;变电站监控系统的升级和改造已成为行业的重要议题。其中&#xff0c;实现无人值守的监控模式成为现代变电站运行的关键。 一、变电站监控无人值守的趋势 随着科技的不断进步&#xff0c;电力行业正在逐步实现智能化、自动化的转型。变电…

centos 7.9 源码安装htop

1.下载源码 wget http://sourceforge.net/projects/htop/files/latest/download 2.上传到tmp目录&#xff0c;并解压 tar xvzf htop-1.0.2.tar.gz mv htop-1.0.2 /opt/ 进入到 cd /opt/htop-1.0.2/ 3.编译并安装 ./configure && make && make install 4.…

ESDA in PySal (6):评估空间异方差的局部模式:LOSH

ESDA in PySal (6)&#xff1a;评估空间异方差的局部模式&#xff1a;LOSH 在下面的笔记本中&#xff0c;我们回顾了 Ord 和 Getis (2012) 提出的局部空间异方差 (LOSH) 统计量 ( H i H_i Hi​) -y&#xff09;。 LOSH 旨在作为分析空间过程平均水平的本地统计数据的补充。 LO…

el-checkbox-group变成竖着的样式

加 style"display: block; padding-top: 10px; margin-left: 27px" <el-checkbox:indeterminate"isIndeterminate"v-model"checkAll"change"handleCheckAllChange">全选&#xff08;{{ memberList.length }}&#xff09;</el…

从Github中下载部分文件

我们经常回去Github中下载代码&#xff0c;但仓库中存在很多project代码。但我们如果只需要某一个或几个项目的代码&#xff0c;此时应该如何操作呢&#xff1f; 这里介绍两款工具&#xff0c;可以从仓库中下载部分文件的小工具: DownGit 和 GitZip 1. DownGit downGit 国内镜…

基于springboot实现大学生社团活动平台项目【项目源码+论文说明】

摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;网络管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信…

线程池执行流程

源码分析 execute&#xff08;提交&#xff09;方法源码&#xff1a; public void execute(Runnable command) {if (command null)throw new NullPointerException();int c ctl.get();if (workerCountOf(c) < corePoolSize) {if (addWorker(command, true))return;c ct…