• 746. Min Cost Climbing Stairs


    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed).

    Once you pay the cost, you can either climb one or two steps. You need to find minimum cost to reach the top of the floor, and you can either start from the step with index 0, or the step with index 1.

    Example 1:

    Input: cost = [10, 15, 20]
    Output: 15
    Explanation: Cheapest is start on cost[1], pay that cost and go to the top.
    

    Example 2:

    Input: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
    Output: 6
    Explanation: Cheapest is start on cost[0], and only step on 1s, skipping cost[3].
    

    Note:

    1. cost will have a length in the range [2, 1000].
    2. Every cost[i] will be an integer in the range [0, 999].

    解题思路:

      最简单的动态规划,dp[i]代表到达这个楼梯的最小代价

      

    1. class Solution {  
    2. public:  
    3.     int minCostClimbingStairs(vector<int>& cost) {  
    4.         if(cost.size()==0) return 0;  
    5.         if(cost.size()==1) return cost[0];  
    6.         vector<int> dp;  
    7.         int n=cost.size();  
    8.         dp.reserve(n+1);  
    9.           
    10.         dp[0]=0;  
    11.         dp[1]=0;  
    12.           
    13.         for(int i=2;i<=n;i++){  
    14.             dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);   
    15.         }  
    16.           
    17.         return dp[n];  
    18.     }  
    19. };  
  • 相关阅读:
    linux学习方法之一
    HDU 1556 Color the ball
    Object-c学习之路十(NSNumber&NSValue)
    蜂鸣器驱动方式源程序--有源无源通用
    Wordpress更换主题之后出错
    mybatis_Generator配置
    Logistic Regression
    求两个字符串的最大公共字串
    数据结构排序系列详解之二 希尔排序
    《mysql必知必会》学习_第五章
  • 原文地址:https://www.cnblogs.com/liangyc/p/8847703.html
Copyright © 2020-2023  润新知