Skip to content

Commit cec4b1b

Browse files
committed
[Feature] add for new
1 parent 781636c commit cec4b1b

File tree

2 files changed

+154
-0
lines changed

2 files changed

+154
-0
lines changed

src/posts/leetcode/topInterview150/README.md

Whitespace-only changes.
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
---
2+
title: 分享|如何科学刷题? by 灵茶山艾府
3+
date: 2025-08-22
4+
categories: [TopInterview150]
5+
tags: [leetcode, dp, topInterview150]
6+
published: true
7+
---
8+
9+
# 70. 爬楼梯
10+
11+
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
12+
13+
每次你可以爬 1 或 2 个台阶。
14+
15+
你有多少种不同的方法可以爬到楼顶呢?
16+
17+
示例 1:
18+
19+
输入:n = 2
20+
输出:2
21+
解释:有两种方法可以爬到楼顶。
22+
1. 1 阶 + 1 阶
23+
2. 2 阶
24+
25+
示例 2:
26+
27+
输入:n = 3
28+
输出:3
29+
解释:有三种方法可以爬到楼顶。
30+
1. 1 阶 + 1 阶 + 1 阶
31+
2. 1 阶 + 2 阶
32+
3. 2 阶 + 1 阶
33+
34+
提示:
35+
36+
1 <= n <= 45
37+
38+
# v1-递归
39+
40+
## 思路
41+
42+
我们能到达当前的位置 i,右两种可能可以达到:
43+
44+
1)跳1格 从 dfs(i-1) 过来
45+
46+
2)跳2格 从 dfs(i-2) 过来
47+
48+
全部的方式 dfs(i) = dfs(i-1) + dfs(i-2)
49+
50+
结束条件:
51+
52+
i == 0,返回1(第一个台阶)
53+
54+
i == 1,返回2(第2个台阶)
55+
56+
开始位置:从 n-1 开始。
57+
58+
## 实现
59+
60+
```java
61+
public int climbStairs(int n) {
62+
return dfs(n-1);
63+
}
64+
65+
private int dfs(int ix) {
66+
if(ix == 0) {
67+
return 1;
68+
}
69+
if(ix == 1) {
70+
return 2;
71+
}
72+
73+
return dfs(ix-1) + dfs(ix-2);
74+
}
75+
```
76+
77+
## 效果
78+
79+
超出时间限制
80+
31 / 45 个通过的测试用例
81+
82+
## 复杂度
83+
84+
时间复杂度:O(2^n)
85+
86+
空间复杂度:O(n)
87+
88+
# v2-dp
89+
90+
## 思路
91+
92+
我们用 dp 加速
93+
94+
1) 数组定义
95+
96+
dp[i] 代表 i 位置的达到方式,dp[0] 代表第一个阶梯
97+
98+
2)状态转移方程
99+
100+
和 v1 类似
101+
102+
```
103+
dp[i] = dp[i-1] + dp[i-2];
104+
```
105+
106+
3) 初始化
107+
108+
```
109+
dp[0] = 1; // 阶梯1
110+
dp[1] = 2; // 阶梯2
111+
```
112+
113+
4)迭代
114+
115+
从 i=2(第三个)阶梯开始遍历
116+
117+
5)返回 dp[n-1]
118+
119+
## 实现
120+
121+
```java
122+
public int climbStairs(int n) {
123+
if(n <= 1) {
124+
return 1;
125+
}
126+
127+
int[] dp = new int[n];
128+
dp[0] = 1;
129+
dp[1] = 2;
130+
for(int i = 2; i < n; i++) {
131+
dp[i] = dp[i-1] + dp[i-2];
132+
}
133+
134+
return dp[n-1];
135+
}
136+
```
137+
138+
## 效果
139+
140+
100%
141+
142+
## 复杂度
143+
144+
O(n)
145+
146+
147+
148+
149+
150+
151+
# 参考资料
152+
153+
https://leetcode.cn/problems/climbing-stairs/description/?envType=study-plan-v2&envId=top-interview-150
154+

0 commit comments

Comments
 (0)