当前位置: 首页 > news >正文

leetcode hot100不同路径

在这里插入图片描述
本题可以采用动态规划来解决。还是按照五部曲来做
确定dp数组:dp[i][j]表示走到(i,j)有多少种路径

确定递推公式:我们这里,只有两个移动方向,比如说我移动到(i,j)那么只能从(i-1,j)或者从(i,j-1)移动,所以,dp[i][j] = dp[i-1][j] + dp[i][j-1]。因为我们求的是路径,并不是步数,所以从dp[i-1][j]到dp[i][j]只有一个路径,同理,所以二者相加即可。

初始化:我们要知道,只能向下或者向右走,也就是说只有两个移动方向,那么如果我们只在第一行移动的时候,dp[0][j]=1,数组的值都是1;同理,只在第一列上移动,dp[i][0]=1;

遍历顺序:我们直接从左到右从上到下依次遍历即可(题中规定)

打印

class Solution {public 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 j = 0;j<n;j++){dp[0][j] = 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. 初始化的时候,按照上述分析直接初始化即可,第一行或者第一列只有一种路径。
  2. 在初始化的时候,只需要初始化到m-1/n-1,因为我们是从下标0开始的。
  3. 在遍历的时候,我们应该从1开始,因为0已经初始化了(行/列)。我们for循环结束的条件就是i<m/j<n,因为我们最后是要走到(i,j)的路径个数,但数组我们是从0开始的,所以只需要<m就可以,并不需要i<=m,并直接返回dp[m-1][n-1]即可。
http://www.lryc.cn/news/300965.html

相关文章:

  • 【前端工程化面试题目】webpack 的热更新原理
  • 不花一分钱,在 Mac 上跑 Windows(M1/M2 版)
  • Attempt to call an undefined function glutInit
  • AB测试最小样本量
  • 在Spring中事务失效的场景
  • Rust 学习笔记 - 变量声明与使用
  • windows 下跑起大模型(llama)操作笔记
  • 人工智能专题:基础设施行业智能化的基础设施,自智网络双价值分析
  • docker 编译安装redis脚本
  • 鸿蒙开发系列教程(二十三)--List 列表操作(2)
  • C#根据权重抽取随机数
  • SORA:OpenAI最新文本驱动视频生成大模型技术报告解读
  • 阿里云第七代云服务器ECS计算c7、通用g7和内存r7配置如何选择?
  • 视觉slam十四讲学习笔记(六)视觉里程计 1
  • PyTorch-线性回归
  • C++数据结构与算法——栈与队列
  • 掌上新闻随心播控,HarmonyOS SDK助力新浪新闻打造精致易用的资讯服务新体验
  • 2024年危险化学品经营单位主要负责人证模拟考试题库及危险化学品经营单位主要负责人理论考试试题
  • C/C++如何把指针所指向的指针设为空指针?
  • 第三节:基于 InternLM 和 LangChain 搭建你的知识库(课程笔记)
  • qt-C++笔记之打印所有发生的事件
  • pytorch 实现线性回归(深度学习)
  • [Doris] Doris的安装和部署 (二)
  • 【QT+QGIS跨平台编译】之三十五:【cairo+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • MySQL(基础)
  • STM32F1 - 中断系统
  • 【Linux系统化学习】缓冲区
  • 基于BP算法的SAR成像matlab仿真
  • 【C++ STL】你真的了解string吗?浅谈string的底层实现
  • 17.3.1.3 灰度