Min Cost Climbing Stairs
Each stair has a cost. You can start at step 0 or 1 and climb 1 or 2 steps at a time. Find the minimum cost to reach the top.
Sample input
[10, 15, 20]
Sample output
15
Solution
def min_cost(cost):
n = len(cost)
a, b = 0, 0
for i in range(2, n + 1):
cur = min(b + cost[i - 1], a + cost[i - 2])
a, b = b, cur
return b
print(min_cost([10, 15, 20]))
function minCost(cost) {
const n = cost.length;
let a = 0, b = 0;
for (let i = 2; i <= n; i++) {
const cur = Math.min(b + cost[i - 1], a + cost[i - 2]);
a = b;
b = cur;
}
return b;
}
console.log(minCost([10, 15, 20]));
public class Main {
static int minCost(int[] cost) {
int n = cost.length;
int a = 0, b = 0;
for (int i = 2; i <= n; i++) {
int cur = Math.min(b + cost[i - 1], a + cost[i - 2]);
a = b;
b = cur;
}
return b;
}
public static void main(String[] args) {
System.out.println(minCost(new int[]{10, 15, 20}));
}
}
fun minCost(cost: IntArray): Int {
val n = cost.size
var a = 0
var b = 0
for (i in 2..n) {
val cur = minOf(b + cost[i - 1], a + cost[i - 2])
a = b
b = cur
}
return b
}
fun main() {
println(minCost(intArrayOf(10, 15, 20)))
}
func minCost(_ cost: [Int]) -> Int {
let n = cost.count
var a = 0, b = 0
if n >= 2 {
for i in 2...n {
let cur = min(b + cost[i - 1], a + cost[i - 2])
a = b
b = cur
}
}
return b
}
print(minCost([10, 15, 20]))
int minCost(List<int> cost) {
final n = cost.length;
int a = 0, b = 0;
for (var i = 2; i <= n; i++) {
final x = b + cost[i - 1];
final y = a + cost[i - 2];
final cur = x < y ? x : y;
a = b;
b = cur;
}
return b;
}
void main() {
print(minCost([10, 15, 20]));
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int minCost(const vector<int>& cost) {
int n = cost.size();
int a = 0, b = 0;
for (int i = 2; i <= n; i++) {
int cur = min(b + cost[i - 1], a + cost[i - 2]);
a = b;
b = cur;
}
return b;
}
int main() {
cout << minCost({10, 15, 20}) << endl;
return 0;
}
#include <stdio.h>
int minCost(int *cost, int n) {
int a = 0, b = 0;
for (int i = 2; i <= n; i++) {
int x = b + cost[i - 1];
int y = a + cost[i - 2];
int cur = x < y ? x : y;
a = b;
b = cur;
}
return b;
}
int main() {
int cost[] = {10, 15, 20};
printf("%d\n", minCost(cost, 3));
return 0;
}