Lectura
Costo mínimo para subir escaleras (Java, Python, PHP, C++, JavaScript)
El ejercicio consiste en encontrar el costo mínimo de subir una escalera con n escalones, donde cada escalón tiene un costo asociado. Se puede subir uno o dos escalones a la vez, y el objetivo es llegar al último escalón con el menor costo posible.
En el ejemplo se puede apreciar que dada una escalera con costos asociados, uno puede subir uno o dos escalones.
Entre el primer y segundo escalón (1 y 100 respectivamente), el costo más bajo es el primero, de valor uno, entonces se sube un escalón.
Explicación del ejercicio Paso por paso
Código de la solución
Java
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
int prev2 = cost[0];
int prev1 = cost[1];
for (int i = 2; i < n; i++) {
int current = cost[i] + Math.min(prev1, prev2);
prev2 = prev1;
prev1 = current;
}
return Math.min(prev1, prev2);
}
}
Python
class Solution(object):
def minCostClimbingStairs(self, cost):
prev2 = cost[0]
prev1 = cost[1]
for i in range(2, len(cost)):
current = cost[i] + min(prev1, prev2)
prev2 = prev1
prev1 = current
return min(prev1, prev2)
PHP
class Solution {
/**
* @param Integer[] $cost
* @return Integer
*/
function minCostClimbingStairs($cost) {
$n = count($cost);
$prev2 = $cost[0];
$prev1 = $cost[1];
for ($i = 2; $i < $n; $i++) {
$current = $cost[$i] + min($prev1, $prev2);
$prev2 = $prev1;
$prev1 = $current;
}
return min($prev1, $prev2);
}
}
C++
class Solution {
public:
int minCostClimbingStairs(vector& cost) {
int n = cost.size();
int prev2 = cost[0];
int prev1 = cost[1];
for (int i = 2; i < n; i++) {
int current = cost[i] + min(prev1, prev2);
prev2 = prev1;
prev1 = current;
}
return min(prev1, prev2);
}
};
JavaScript
/**
* @param {number[]} cost
* @return {number}
*/
var minCostClimbingStairs = function(cost) {
let prev2 = cost[0];
let prev1 = cost[1];
for (let i = 2; i < cost.length; i++) {
let current = cost[i] + Math.min(prev1, prev2);
prev2 = prev1;
prev1 = current;
}
return Math.min(prev1, prev2);
};
Si te gustó el contenido, ¡visita mi canal de YouTube para ver más explicaciones sobre algoritmos y estructuras de datos!