LeetCode 70. Climbing Stairs (爬梯子)
阿新 • • 發佈:2018-11-29
原題
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
Note: Given n will be a positive integer.
Example 1:
Input: 2 Output: 2 Explanation: There are two ways to climb to the top. 1. 1 step + 1 step 2. 2 steps
Example 2:
Input: 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
Reference Answer
思路分析
直接使用地方法得到結果,時間複雜度比較低,遞迴公式為:F[n] = F[n-1] + F[n-2]
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n < 0:
return 0
temp_res = [1,2,3]
if n <= 3:
return temp_res[n-1]
for index in range(3, n):
temp_res.append(temp_res[index-1] + temp_res[index-2])
return temp_res[n-1]