LeetCode 70. 爬楼梯
2023-12-15 14:51:55
You are climbing a staircase. It takes?n?steps to reach the top.
Each time you can either climb?1?or?2?steps. In how many distinct ways can you climb to the top?
Example 1:
Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
- 1 step + 1 step
- 2 steps
Example 2:
Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
- 1 step + 1 step + 1 step
- 1 step + 2 steps
- 2 steps + 1 step
Constraints:
- 1 <= n <= 45
解法思路:
// 懵逼的时候:
// 暴力?基本情况?
// 找 最近 重复子问题
// if else
// for while, recursion
// 1: 1
// 2: 2
// 3: f(1) + f(2) 第三个台阶必须从第二个台阶跨一步上去 或者 从第一个台阶跨两步上去
// 4: f(2) + f(3)
// f(n) = f(n-1) + f(n-2) : Fibonacii
class Solution {
public int climbStairs(int n) {
// recursion (超时)
// if (n <= 2) return n;
// return climbStairs(n-1) + climbStairs(n-2);
if (n <= 2) return n;
int first = 1;
int second = 2;
int res = 0;
for (int i = 3; i <= n; i++) {
res = first + second;
first = second;
second = res;
}
return res;
}
}
文章来源:https://blog.csdn.net/qq_38304915/article/details/135013590
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!