爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n<3:
return n
dp=[0]*(n+1)
dp[0]=0
dp[1]=1
dp[2]=2
i=3
while i<n+1:
dp[i]=dp[i-1]+dp[i-2]
i+=1
return dp[-1]
使用最小花费爬楼梯
class Solution(object):
def minCostClimbingStairs(self, cost):
"""
:type cost: List[int]
:rtype: int
"""
dp=[0]*len(cost)
dp[0]=cost[0]
dp[1]=cost[1]
for i in range(2,len(cost)):
dp[i]=min(dp[i-1],dp[i-2])+cost[i]
return min(dp[-1],dp[-2])