509. 斐波那契数
func fib(n int) int {
dp := make([]int, 2)
dp[0] = 0
dp[1] = 1
for i := 2; i <= n; i++{
dp = append(dp,dp[i - 1] + dp[i - 2])
}
return dp[n]
}
70. 爬楼梯
func climbStairs(n int) int {
dp := make([]int, 3)
dp[1] = 1
dp[2] = 2
for i := 3; i <= n; i++{
dp = append(dp, dp[i - 1] + dp[i - 2])
}
return dp[n]
}
746. 使用最小花费爬楼梯
同样是前面两种的最小值加上当前的cost即可。
func minCostClimbingStairs(cost []int) int {
dp := make([]int, len(cost))
dp[0] = cost[0]
dp[1] = cost[1]
for i := 2; i < len(cost);i++{
dp[i] =int(math.Min(float64(dp[i - 1]), float64(dp[i - 2]))) + cost[i]
}
//return dp[len(cost) - 1]
return int(math.Min(float64(dp[len(cost) - 2]), float64(dp[len(cost)- 1] )))
}