Rolling minimum
Time O(n) Space O(1)a = dp[i − 2], b = dp[i − 1], both 0 at the start; compute up to i = n.
class Solution {
public int minCostClimbingStairs(int[] cost) {
int a = 0, b = 0; // dp[0], dp[1]
for (int i = 2; i <= cost.length; i++) {
int c = Math.min(b + cost[i - 1], a + cost[i - 2]);
a = b;
b = c;
}
return b;
}
}Verdict: Two variables.