509 斐波那契数
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
def fib(n:int)->int:if n==0:reteurn 0dp=[0]*(n+1)dp[0]=0dp[1]=1for i in range(2,n+1):dp[i]=dp[i-1]+dp[i-2]return dp[n]def fib(n:int)->int:if n<=1:return ndp=[0,1]for i in range(2,n+1):total=dp[0]+dp[1]dp[0]=dp[1]dp[1]=totalreturn dp[1]def fib(n:int)->int:if n<2:return nreturn fib(n-1)+fib(n-2)
70 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
思路
第n层,可以由第n-1层爬一个台阶到达,也可以由第n-2层爬2个台阶到达
dp[n]=dp[n-1]+dp[n-2]
def climbStaris(n:int)->int:if n<2:return ndp=[0,1,2]for i in range(3,n+1):total=dp[1]+dp[2]dp[1]=dp[2]dp[2]=totalreturn dp[2]
746 使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
def minCostClimbingStairs(cost:list)->int:if len(cost)<2:return 0dp=[0]*len(cost)dp[0]=0dp[1]=0for i in range(2,len(cost)):dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])return dp[-1]
- 楼梯的顶部是第len(cost)+1层,不是len(cost)