当前位置: 面试刷题>> 爬楼梯 (经典算法题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 ``` ### 码小课内容分享 码小课网站中有更多关于算法和数据结构的学习内容,包括但不限于动态规划、贪心算法、回溯算法等经典算法思想的应用,以及详细的解题思路和代码实现。在这里,你可以找到从基础到进阶的各种学习资源,帮助你提升编程能力,掌握解决复杂问题的技巧。
推荐面试题