class Solution:
def climbStairs(self, n: int) -> int:
# Solution 1:递归,会超时
'''
if n == 1:
return 1
if n == 2:
return 2
return self.climbStairs(n-1) + self.climbStairs(n-2)
'''
# Solution 2:递归 + 哈希,超时
'''
if n == 1:
return 1
if n == 2:
return 2
hash_res = {}
if (n-1) not in hash_res:
hash_res[n-1] = self.climbStairs(n-1)
if (n-2) not in hash_res:
hash_res[n-2] = self.climbStairs(n-2)
return hash_res[n-1] + hash_res[n-2]
'''
# Solution 3:迭代
if n == 1:
return 1
if n == 2:
return 2
res_one = 2 # 记录f(n-1)
res_two = 1 # 记录f(n-2)
res = 0 # 记录最终结果f(n)
for i in range(3, n+1):
res = res_one + res_two
res_two = res_one # 下一步n=n+1了,所以f(n-1) -> f(n-2)
res_one = res # 下一步n=n+1了,所以f(n) -> f(n-1)
return res
【leetcode】爬楼梯
猜你喜欢
转载自blog.csdn.net/ningmengzhihe/article/details/127819002
今日推荐
周排行