あなたは階段を登っていると仮定し、あなたは屋根に到達するためのnを必要としています。
あなたは、1つのまたは2つのステップを登ることができるたびに、あなたはそれが屋根に登ることができますどのように多くの異なる方法がありますか?
暴力行為(再帰的に):
def climbStairs(n):
return climb_Stairs(0, n)
def climb_Stairs(i, n):
if i > n:
return 0
if i == n:
return 1
return climb_Stairs(i+1, n) + climb_Stairs(i+2, n)
上記の公式の説明では、以下の溶液は、AC上のキャッシュを追加ネチズンのこぎりです
from functools import lru_cache
class Solution:
@lru_cache(10**8)
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n == 1:
return 1
elif n == 2:
return 2
else:
return self.climbStairs(n - 1) + self.climbStairs(n - 2)