Problem Description
Given a cost array. Each index of the array represents the cost to reach a specific position, and you need to calculate the minimum cost to go from a starting point to the end point.
For example, if the cost array is [10, 15, 20]
, you need to find the minimum cost to go from the first index (0) to either the second index (1) or the third index (2). In this case, the cost of passing through index 1, which is 15, is determined.
Input
– Cost array: cost
(1 <= cost.length <= 100)
Output
– Returns the number that represents the minimum cost.
Constraints
– The costs are positive integers.
Solution Process
To solve this problem, we will use Dynamic Programming. This method stores already calculated results to avoid redundant calculations and improve efficiency.
Step 1: Understand the Problem
Given the cost array, we calculate the minimum cost to reach the endpoint starting from the first index. We need to accumulate the costs to move from each index to the next, in order to calculate the overall cost.
Step 2: Define the Dynamic Programming Table
We will define an array named dp
. dp[i]
stores the minimum cost to reach index i
. Since the cost at the first index is its own value, initialize dp[0]
to cost[0]
.
Step 3: Set Initial State
The initial state is set as follows:
let dp = new Array(cost.length);
dp[0] = cost[0];
Step 4: Construct the Recurrence Relation
The recurrence relation is as follows:
dp[i] = cost[i] + Math.min(dp[i - 1], dp[i - 2]);
This means that the cost to reach the current index i
is the sum of the current index’s cost and the minimum cost from the previous two indices (the previous value and the one before that).
Step 5: Write the Complete Code
function minCost(cost) {
let n = cost.length;
if (n === 0) return 0;
if (n === 1) return cost[0];
let dp = new Array(n);
dp[0] = cost[0];
dp[1] = cost[1];
for (let i = 2; i < n; i++) {
dp[i] = cost[i] + Math.min(dp[i - 1], dp[i - 2]);
}
return Math.min(dp[n - 1], dp[n - 2]);
}
// Example usage:
console.log(minCost([10, 15, 20])); // Output: 15
Step 6: Analyze the Code
This code includes initial conditions for when the cost array has a size of 1 or 0. After that, it calculates the minimum cost for each index using a loop, and finally returns the overall minimum cost.
Step 7: Time Complexity
The time complexity is O(n)
. (n is the length of the cost array). It is efficient since it only visits each index once.
Step 8: Additional Explanation
This problem is a useful algorithm in real life, applicable to problems like finding paths or calculating the shortest route. This principle can be extended to tackle other complex problems, helping to deepen understanding of algorithms.