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].
---

Intuition
From last 2 steps cost to reach top is array element itself, since all number are positive, we will take respectively 2, 1 step to minimize the cost

Cost 3rd last step = min (cost for step + 1, cost for step + 2) + current cost

At each step we can track two costs min for step + 1, min for step + 2, and apply above formula
---
Time - O(n)
Space - O(1)
---
Related problems
climbing-stairs
--