当前位置: 面试刷题>> 爬楼梯 (经典算法题500道)
### 题目描述补充
**题目:爬楼梯**
假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
### 示例
**示例 1**:
```
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 步 + 1 步
2. 2 步
```
**示例 2**:
```
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 步 + 1 步 + 1 步
2. 1 步 + 2 步
3. 2 步 + 1 步
```
### PHP 示例代码
```php
function climbStairs($n) {
if ($n <= 1) {
return 1;
}
$dp = array_fill(0, $n + 1, 0);
$dp[1] = 1;
$dp[2] = 2;
for ($i = 3; $i <= $n; $i++) {
$dp[$i] = $dp[$i - 1] + $dp[$i - 2];
}
return $dp[$n];
}
// 测试示例
echo climbStairs(2); // 输出 2
echo climbStairs(3); // 输出 3
```
### Python 示例代码
```python
def climbStairs(n):
if n <= 1:
return 1
dp = [0] * (n + 1)
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
# 测试示例
print(climbStairs(2)) # 输出 2
print(climbStairs(3)) # 输出 3
```
### JavaScript 示例代码
```javascript
function climbStairs(n) {
if (n <= 1) {
return 1;
}
let dp = new Array(n + 1).fill(0);
dp[1] = 1;
dp[2] = 2;
for (let i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
// 测试示例
console.log(climbStairs(2)); // 输出 2
console.log(climbStairs(3)); // 输出 3
```
### 码小课内容分享
码小课网站中有更多关于算法和数据结构的学习内容,包括但不限于动态规划、贪心算法、回溯算法等经典算法思想的应用,以及详细的解题思路和代码实现。在这里,你可以找到从基础到进阶的各种学习资源,帮助你提升编程能力,掌握解决复杂问题的技巧。