var minCostClimbingStairs = (cost, i = cost.length, memo = new Map()) => {
const isBaseCase = i <= 1;
if (isBaseCase) return 0;
if (memo.has(i)) return memo.get(i);;
const [ prev, prevPrev ] = [ (i - 1), (i - 2) ];
const downOne = minCostClimbingStairs(cost, prev, memo) + cost[prev];
const downTwo = minCostClimbingStairs(cost, prevPrev, memo) + cost[prevPrev];
memo.set(i, Math.min(downOne, downTwo));
return memo.get(i);
}
var minCostClimbingStairs = (cost) => {
const tabu = new Array(cost.length + 1).fill(0);
for (let i = 2; i < tabu.length; i++) {
const [ prev, prevPrev ] = [ (i - 1), (i - 2) ];
const downOne = tabu[prev] + cost[prev];
const downTwo = tabu[prevPrev] + cost[prevPrev];
tabu[i] = Math.min(downOne, downTwo);
}
return tabu[tabu.length - 1];
}
var minCostClimbingStairs = (cost) => {
let [ downOne, downTwo ] = [ 0, 0 ];
for (let i = 2; i < cost.length + 1; i++) {
const temp = downOne;
const [ _prev, _prevPrev ] = [ (i - 1), (i - 2) ];
const prev = downOne + cost[_prev];
const prevPrev = downTwo + cost[_prevPrev];
downOne = Math.min(prev, prevPrev);
downTwo = temp;
}
return downOne;
}