zoukankan      html  css  js  c++  java
  • 【Leetcode】746. Min Cost Climbing Stairs

    题目地址:

    https://leetcode.com/problems/min-cost-climbing-stairs/description/

    解题思路:

    官方给出的做法是倒着来,其实正着来也可以,无非就是进入某个step有两种方式,退出某一个

    step也有两种方式,因此若用dp[i]表示进入第i步并预计从这里退出的最小值,dp[i] = cost[i] + min(dp[i-1],dp[i-2])

    最后求退出时最小值,min(dp[i-1],dp[i])

    真正写代码时不必用数组记录dp,用f1表示dp[i-2],f2表示dp[i-1].然后用dp[i-1],dp[i]更新f1,和f2

    代码:

    class Solution {
    public:
        int minCostClimbingStairs(vector<int>& cost) {
            int f1 = cost[0];
            int f2 = cost[1];
            for (size_t i = 2; i < cost.size(); i++)
            {
                int f3 = cost.at(i) + min(f1, f2);
                f1 = f2;
                f2 = f3;
            }
    
            return min(f1,f2);
        }
    };
  • 相关阅读:
    hdu 1257 贪心
    hdu 4301 简单DP
    hdu 4221 贪心
    hdu 4223 排序
    hdu 4217 树状数组+二分搜索
    hdu 2899
    hdu 1312
    hdu 1258
    hdu 3276
    hdu 3274
  • 原文地址:https://www.cnblogs.com/AndrewGhost/p/8944250.html
Copyright © 2011-2022 走看看