day 33| ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

509. 斐波那契数

day 33| ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯_第1张图片

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] )))
}

你可能感兴趣的:(数据结构与算法,算法)