前言🌧️
算法,对前端人来说陌生又熟悉,很多时候我们都不会像后端工程师一样重视这项能力。但事实上,算法对每一个程序员来说,都有着不可撼动的地位。
因为开发的过程就是把实际问题转换成计算机可识别的指令,也就是《数据结构》里说的,「设计出数据结构,在施加以算法就行了」。
编写指令的好坏,会直接影响到程序的性能优劣,而指令又由数据结构和算法组成,所以数据结构和算法的设计基本上决定了最终程序的好坏。
题目🦀
70. 爬楼梯
难度简单
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶
示例 2:
输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶 3. 2 阶 + 1 阶
提示:
1 <= n <= 45
解题思路🌵
- 由于是叠加问题
- 采用动态规划来解决此类问题
解题步骤🐂
- 先确定好dep的规律
- 当前台阶的走法就等于dep[n-2]+dep[n-1]
- 循环遍历即可求解
源码🔥
/** * @param {number} n * @return {number} */ var climbStairs = function(n) { let dep =[1,1] for(let i=2;i<=n;i++){ dep[i]=dep[i-1]+dep[i-2] } return dep[n] };
时间复杂度:O(n) (n为字符串的长度)
空间复杂度:O(1)
结束语🌞
那么鱼鱼的LeetCode算法篇的「LeetCode」70-爬楼梯⚡️
就结束了,算法这个东西没有捷径,只能多写多练,多总结,文章的目的其实很简单,就是督促自己去完成算法练习并总结和输出,菜不菜不重要,但是热爱🔥,喜欢大家能够喜欢我的短文,也希望通过文章认识更多志同道合的朋友,如果你也喜欢折腾
,欢迎加我好友
,一起沙雕
,一起进步
。