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

leetcode 62. 不同路径

2023.8.8

        用dp算法一遍过了,很舒服。 重点还是要确定dp数组的含义,本题的dp数组要设成二维的,dp[i][j]的含义是:到(i,j)这个点一共有多少种路径。由于题中说了m和n都大于1,所以假设一种极端情况 ,n和m都等于1时,此时路径应该是1的,我根据推导画出以下草图:

         每个方格的数字代表到当前位置的路径个数。首先,第一行和第一列肯定都是1,因为机器人只能向右或者向下走。从第二行第二列开始,可以发现当前位置的路径个数 = 上方位置的路径个数+左边位置的路径个数。 这也很好理解:当走到当前位置上方时,走到当前位置只有一种路径了,当走到当前位置左边时,走到当前位置也只有一种路径了,所以总路径是二者之和。这种递推方式有点像前几天爬楼梯那题,只不过本题是二维的形式。于是递推公式也推导出来了,            即 dp[i][j] = dp[i-1][j] + dp[i][j-1];    

        然后由于需要从第二行第二列开始遍历,需要判断一下当n=1或者m=1的情况:此时只有一种路径,所以直接返回1。 然后两个for循环都从索引1开始遍历:不断向右向下递推赋值。具体代码还是很简单的:

class Solution {
public:int uniquePaths(int m, int n) {if(m==1 || n==1) return 1;vector<vector<int>> dp(m,vector<int>(n,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];}
};

http://www.lryc.cn/news/115347.html

相关文章:

  • ad+硬件每日学习十个知识点(25)23.8.5(常见芯片类型、数字隔离芯片、IO扩展芯片TCAL6416)
  • fetch-github-hosts间隔一年大更新v2.6发布,多端支持
  • K最近邻算法:简单高效的分类和回归方法(三)
  • 【数据分析专栏之Python篇】五、pandas数据结构之Series
  • 中间件多版本冲突的4种解决方案和我们的选择
  • 对 async/await 的理解
  • Vue 整合 Element UI 、路由嵌套、参数传递、重定向、404和路由钩子(五)
  • 修改 Ubuntu 系统的时区
  • 如何离线安装ModHeader - Modify HTTP headers Chrome插件?
  • 在Linux中安装MySQL
  • python --windows获取启动文件夹路径/获取当前用户名/添加自启动文件
  • 微信云托管(本地调试)⑥:nginx、vue刷新404问题
  • 数据结构 二叉树(一篇基本掌握)
  • ​可视化绘图技巧100篇高级篇(四)-南丁格尔玫瑰图(二)
  • Stable Diffusion - Candy Land (糖果世界) LoRA 提示词配置与效果展示
  • ES6学习-module语法
  • Flutter 实现按位置大小比例布局的控件
  • ES6 - 对象新增的一些常用方法
  • 半导体存储电路
  • web前端之CSS操作
  • Python SQLAlchemy ( ORM )
  • 鉴源实验室丨汽车网络安全运营
  • 分布式链路追踪之SkyWalking详解和实战
  • 【工程实践】使用EDA(Easy Data Augmentation)做数据增强
  • ClickHouse(十三):Clickhouse MergeTree系列表引擎 - ReplicingMergeTree
  • 机器学习笔记之优化算法(十)梯度下降法铺垫:总体介绍
  • Selenium 根据元素文本内容定位
  • 第17章-Spring AOP经典应用场景
  • Leetcode周赛 | 2023-8-6
  • ts中interface自定义结构约束和对类的约束