| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 夜深人静刷力扣 -> 正文阅读 |
|
[数据结构与算法]夜深人静刷力扣 |
最近在刷动态规划的题目,跟着大佬“代码随想录”的pdf在刷力扣上的题目。碰到了一个动态规划的题目,于是将它记录了下来。 题目链接:https://leetcode-cn.com/problems/unique-paths/ 我根据pdf学会了三种解题方法,分别是二叉树的遍历(把各个叶子节点找出),动态规划(二维数组的优点是思路清楚,一目了然。一维数组的优点是大大减少了空间复杂度),数论(组合的方法,不过要注意int类型相乘的时候会溢出,要做到边乘边除)。 ? 下面我来详细的叙述各种方法,并附上代码 题目如图所示: ?首先我要讲述的是二叉树的遍历的方法,这里的知识需要用的数据结构。没学数据结构的童鞋请参考B站《王道考研数据结构》。不说了上代码
这里由于要遍历整个叶子节点,时间复杂度将是指数的形式,故不可取。 第二种方法是动态规划,首先我们讲解用二维数组的方法来动态规划。 最近在“代码随想录”pdf里面学到了动态规划五部曲
?那么我们先来看动态规划(二维数组的实现)
我们再来试着用动态规划(一维数组的实现),实际上就是把二维数组的j省略了
那么最后我们看看数论(排列组合的方法):从m+n-2个数中选m-1个数 组合数公式如图 ?
? ?但是这种方法提交的话会出现“溢出”(两个int类型相乘)
?解决方法是做到边乘边除。
?好了,终于把这道题叙述完了。 已知乾坤大,犹怜草木青。这里北风,星河辽阔,一路相伴。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:28:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |