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

news/2024/11/29 6:52:42/

文章目录

  • 62.不同路径
    • 思路
    • 代码
    • 总结
  • 63. 不同路径 II
    • 思路
    • 代码
    • 总结

62.不同路径

思路

初始化分析很重要

代码

自己写的第一版

class Solution {
public:int uniquePaths(int m, int n) {// dp[i,j]: 到达[i,j]有多少种方法// dp[m,n] = dp[m-1,n] + dp[m,n-1];// dp[0,0] = 1;...if(m <= 1 && n <= 1) return 1;vector<vector<int>> dp (m+1, vector<int>(n+1));for(int i = 0; i < m+1; i++) dp[i][0] = 0;for(int j = 0; j < n+1; j++) dp[0][j] = 0;// dp[1][1] = 1;dp[0][1] = 1;for(int i = 1; i < m+1; i++) {for(int j = 1; j < n+1; j++) {dp[i][j] = dp[i-1][j] + dp[i][j-1];}}for(int i = 1; i < m+1; i++) {for(int j = 1; j < n+1; j++) {cout << dp[i][j] <<" ";}cout << endl;}return dp[m][n];}
};

题解的代码设置的dp数组维度是[m,n],我的是[m+1,n+1]

总结

  1. 组合数学方法里处理溢出的代码比较复杂

63. 不同路径 II

思路

判断有无障碍 – 有障碍的话,经过这个节点的路径截断

代码

自己写的版本

class Solution {
public:int uniquePaths(int m, int n) {// dp[i,j]: 到达[i,j]有多少种方法// dp[m,n] = dp[m-1,n] + dp[m,n-1];// dp[0,0] = 1;...if(m <= 1 && n <= 1) return 1;vector<vector<int>> dp (m+1, vector<int>(n+1));for(int i = 0; i < m+1; i++) dp[i][0] = 0;for(int j = 0; j < n+1; j++) dp[0][j] = 0;// dp[1][1] = 1;dp[0][1] = 1;for(int i = 1; i < m+1; i++) {for(int j = 1; j < n+1; j++) {dp[i][j] = dp[i-1][j] + dp[i][j-1];}}for(int i = 1; i < m+1; i++) {for(int j = 1; j < n+1; j++) {cout << dp[i][j] <<" ";}cout << endl;}return dp[m][n];}
};

题解的代码思路是:障碍后的路径保持初始状态0,障碍前的路径正常初始化

总结

  1. 空间优化版本的代码是使用了滚动数组

http://www.ppmy.cn/news/76487.html

相关文章

<Linux开发>驱动开发 -之-pinctrl子系统

&#xff1c;Linux开发&#xff1e;驱动开发 -之-pinctrl子系统 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过程详细记…

Nginx配置带证书代理https

在nginx.conf同级目录下创建文件夹ssl&#xff0c;用来放置证书&#xff0c;把访问对方需要的证书上传到ssl文件夹下&#xff0c;若证书是pem或cer在nginx.conf加上证书即可&#xff1b;若证书是.p12的&#xff0c;则先把证书转换成.pem格式的证书&#xff0c;分别执行下面命令…

C++11 -- 类的新功能

文章目录 类的新功能默认成员函数类成员变量初始化强制生成默认函数的关键字default禁止生成默认函数的关键字delete继承和多态中的final和override关键字 类的新功能 默认成员函数 原来在C类中,有6个默认成员函数: 1: 构造函数 2: 拷贝构造函数 3: 拷贝赋值重载 4: 析构函数…

Leetcode 538. 把二叉搜索树转换为累加树(Morris 遍历)

Leetcode 538. 把二叉搜索树转换为累加树&#xff08;Morris 遍历&#xff09;题目 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或…

【22-23春】AI作业10-经典卷积网络

1.LeNet & MNIST LeNet是一种神经网络的模型&#xff0c;用于图像识别和分类。他包含 3 个卷积层&#xff0c;2 个池化层&#xff0c;1 个全连接层。其中所有卷积层的所有卷积核都为 5x5&#xff0c;步长 strid1&#xff0c;池化方法都为全局 pooling&#xff0c;激活函数…

05 JDBC基础

什么是持久化 将内存中的数据永久保存在磁盘中,方便以后使用 JDBC是什么 java数据库连接 用于执行sql语句的java API java官方提供接口,各大厂商提供实现类,程序员使用实现类的jar包 JDBC的开发流程 添加包: mysql-connector-java-5.1.48.jar lombok.jar 口诀:贾连欲…

Windows操作系统的文件组织结构和计算方法

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天总结一下Windows操作系统的文件组织结构和计算方法。 这是一块非常实用的知识&#xff0c;感谢大家来看这个帖子。 Windows组织结构就是文件的组织形式&#xff0c;其中&#xff1a; 1.Windows逻辑结构…

java+springboot留学生新闻资讯网的设计与实现

Spring框架是Java平台的一个开放源代码的Full-stack(全栈)应用程序框架&#xff0c;和控制翻转容器的实现。Spring框架的一些核心功能理论&#xff0c;可以用于所有Java应用&#xff0c;Spring还为Java EE构建的Web应用提供大量的扩展支持。Spring框架没有实现任何的编程模型&a…