也是斐波那契数列的变体。区别是初始项不同。如果直接用递归做会比较耗时
补充:看了别的大神说了可以用通项公式求解,想起来之前学数列的时候学过,用求根公式即可,有空补一下~
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. 1 step + 1 step 2. 2 steps
Example 2:
Input: n = 3 Output: 3 Explanation: There are three ways to climb to the top. 1. 1 step + 1 step + 1 step 2. 1 step + 2 steps 3. 2 steps + 1 step
Constraints:
1 <= n <= 45
class Solution: def climbStairs(self, n): if n<=2: return n else: prev1 = self.climbStairs(1) prev2 = self.climbStairs(2) for _ in range(n-2): temp = prev2 prev2 = prev1 + prev2 prev1 = temp return prev2