zoukankan      html  css  js  c++  java
  • leetcode 746. Min Cost Climbing Stairs(easy understanding dp solution)

    leetcode 746. Min Cost Climbing Stairs(easy understanding dp solution)

    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:
    cost will have a length in the range [2, 1000].
    Every cost[i] will be an integer in the range [0, 999].

    solution

    top要么是 top - 1 上去的,要么是 top -2 上去的
    故动态规划的状态转移方程为:
    dp[i] = min{dp[i-1]+cost[i-1], dp[i -2]+cost[i-2]}
    可以从第0阶开始,也可以从第1阶开始,故动态规划处理两次即可

    class Solution {
    public:
    	int minCostClimbingStairs(vector<int>& cost) {
    		int n = cost.size();
    		int dp[n + 1];
    		dp[0] = 0;
    		dp[1] = cost[0];
    		for (int i = 2; i <= n; i++)
    			dp[i] = (dp[i - 1] + cost[i - 1]) < (dp[i - 2] + cost[i - 2]) ? (dp[i - 1] + cost[i - 1]) : (dp[i - 2] + cost[i - 2]);
    
    		int dp1[n + 1];
    		dp1[0] = 0;
    		dp1[1] = cost[1];
    		for (int i = 2; i <= n - 1; i++)
    			dp1[i] = (dp1[i - 1] + cost[i]) < (dp1[i - 2] + cost[i - 1]) ? (dp1[i - 1] + cost[i]) : (dp1[i - 2] + cost[i - 1]);
    
    		if (dp1[n - 1] < dp[n])
    			return dp1[n - 1];
    		else
    			return dp[n];
    
    	}
    };
    

    相关链接

    leetcode

    blogs record our growth
  • 相关阅读:
    Android系统Recovery工作原理2update.zip差分包问题的解决
    学习 原理图1 认识 元器件
    ARM新GPU架构Midgard
    ARM新GPU架构Midgard
    10种图片防盗链的方法
    一个基于PDO的数据库操作类(新) + 一个PDO事务实例
    localhost与127.0.0.1的区别
    header ContentType类型
    PHP采集利器:Snoopy 试用心得
    一个简单易用的导出Excel类
  • 原文地址:https://www.cnblogs.com/qwfand/p/12673043.html
Copyright © 2011-2022 走看看