All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0701_0800.s0746_min_cost_climbing_stairs.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0701_0800.s0746_min_cost_climbing_stairs;

// #Easy #Array #Dynamic_Programming #Dynamic_Programming_I_Day_2
// #Level_1_Day_11_Dynamic_Programming #2022_03_25_Time_1_ms_(86.38%)_Space_43.6_MB_(54.14%)

/**
 * 746 - Min Cost Climbing Stairs\.
 *
 * Easy
 *
 * You are given an integer array `cost` where `cost[i]` is the cost of ith step on a staircase. Once you pay the cost, you can either climb one or two steps.
 *
 * You can either start from the step with index `0`, or the step with index `1`.
 *
 * Return _the minimum cost to reach the top of the floor_.
 *
 * **Example 1:**
 *
 * **Input:** cost = [10,15,20]
 *
 * **Output:** 15
 *
 * **Explanation:** You will start at index 1. - Pay 15 and climb two steps to reach the top. The total cost is 15.
 *
 * **Example 2:**
 *
 * **Input:** cost = [1,100,1,1,1,100,1,1,100,1]
 *
 * **Output:** 6
 *
 * **Explanation:** You will start at index 0. 
 *
 * - Pay 1 and climb two steps to reach index 2. 
 * - Pay 1 and climb two steps to reach index 4. 
 * - Pay 1 and climb two steps to reach index 6. 
 * - Pay 1 and climb one step to reach index 7. 
 * - Pay 1 and climb two steps to reach index 9. 
 * - Pay 1 and climb one step to reach the top. 
 *   The total cost is 6.
 *
 * **Constraints:**
 *
 * *   `2 <= cost.length <= 1000`
 * *   `0 <= cost[i] <= 999`
**/
public class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int[] dp = new int[cost.length];
        dp[0] = cost[0];
        dp[1] = cost[1];
        for (int i = 2; i < cost.length; i++) {
            dp[i] = cost[i] + Math.min(dp[i - 1], dp[i - 2]);
        }
        return Math.min(dp[cost.length - 1], dp[cost.length - 2]);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy