爬楼梯
题目描述
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
- 1 阶 + 1 阶
- 2 阶
示例 2:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
- 1 阶 + 1 阶 + 1 阶
- 1 阶 + 2 阶
- 2 阶 + 1 阶
提示:
1 <= n <= 45
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/climbing-stairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的答案
1 | func climbStairs(n int) int { |
如果没有一定题量积累,真不一定能做出来,我第一个想到的是 Cn^2
的思想,再想到 暴力DFS
,由于前两个分别遇到了溢出和超时,又想到其存在重复递归同一子树的问题,才接着想到了动态规划,最后解决。
解题思路
见注释
题解
1 | func climbStairs(n int) int { |
总结
- DFS
- 动态规划
Comments
Comment plugin failed to load
Loading comment plugin