πDay 9. Min Cost Climbing Stairs π§
The problem can be found at the following link: Question Link
π‘ Problem Description:
Given an array of integers cost[], where cost[i] represents the cost of the i-th step on a staircase, you can either:
Pay the cost at
i-thstep and move one step forward.Pay the cost at
i-thstep and move two steps forward.
Return the minimum cost required to reach the top of the floor.
π Assumptions:
0-based indexing
You can start either from step 0 or step 1
π Example Walkthrough:
Example 1:
Input:
cost[] = [10, 15, 20]Output:
Explanation:
The cheapest way is:
Start at
cost[1] = 15Jump 2 steps to the top (no cost at the top)
Example 2:
Input:
Output:
Explanation:
The cheapest way is:
1 β 3 β 4 β 6 β 7 β 9 (Total cost = 1 + 1 + 1 + 1 + 1 + 1 = 6)
Constraints:
$(2 \leq \text{cost.length} \leq 1000)$
$2 β€ cost.size() β€ 10^5$
$(0 \leq \text{cost[i]} \leq 999)$
π― My Approach:
Algorithm Steps:
Use two variables
aandbto keep track of the minimum cost of the last two steps.Iterate through the cost array, updating
busing the recurrence relation:b = cost[i] + min(a, b)a = previous b(before update)
Return
min(a, b), representing the minimum cost to reach the top.
π Time and Auxiliary Space Complexity
Expected Time Complexity:
O(N), as we iterate through thecostarray once.Expected Auxiliary Space Complexity:
O(1), as we use only a constant amount of extra space (aandb).
π Solution Code
Code (C++)
β‘ Alternative Approaches
1οΈβ£ Dynamic Programming (O(N) Time, O(N) Space) β Tabulation
Algorithm Steps:
Use an array
dp[]to store the minimum cost at each step.Base cases:
dp[0] = cost[0]dp[1] = cost[1]
Recurrence relation: $[ \text{dp[i]} = \text{cost[i]} + \min(\text{dp[i-1]}, \text{dp[i-2]}) $]
β
Time Complexity: O(N)
β
Space Complexity: O(N)
2οΈβ£ Recursive + Memoization (O(N) Time, O(N) Space)
Algorithm Steps:
Use recursion with memoization to avoid repeated calculations.
Base cases:
If
i < 0, return0If
i == 0 || i == 1, returncost[i]
Store computed results in a
dp[]array to prevent redundant calls.
β
Time Complexity: O(N)
β
Space Complexity: O(N)
3οΈβ£ Iterative Approach Without Extra Variables (O(N) Time, O(1) Space)
Algorithm Steps:
Modify the input array
cost[]in-place to store the cumulative minimum cost.
β
Time Complexity: O(N)
β
Space Complexity: O(1)
Comparison of Approaches
Approach
β±οΈ Time Complexity
ποΈ Space Complexity
β Pros
β οΈ Cons
Iterative DP (Space Optimized)
π‘ O(N)
π’ O(1)
Simple and fastest iterative method
Limited to Fibonacci-like logic
Dynamic Programming (Tabulation)
π‘ O(N)
π΄ O(N)
Easy to understand and implement
Consumes extra space
Recursive + Memoization
π‘ O(N)
π΄ O(N)
Natural recursive logic
Higher recursion overhead
Iterative In-Place Update
π‘ O(N)
π’ O(1)
No extra variables used
Modifies input array
π‘ Best Choice?
β For simplicity and efficiency: Use Iterative DP (Space Optimized). β For an alternative approach without extra space: Use In-Place Iterative DP. β For understanding step-by-step execution: Use Tabulation DP.
Code (Java)
Code (Python)
π― Contribution and Support:
For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: Any Questions. Letβs make this learning journey more collaborative!
β If you find this helpful, please give this repository a star! β
πVisitor Count
Last updated