Back to all solutions
#1167 - Minimum Cost to Connect Sticks
Problem Description
You have some number of sticks with positive integer lengths. These lengths are given as an array sticks, where sticks[i] is the length of the ith stick.
You can connect any two sticks of lengths x and y into one stick by paying a cost of x + y.
You must connect all the sticks until there is only one stick remaining.
Return the minimum cost of connecting all the given sticks into one stick in this way.
Solution
/**
* @param {number[]} sticks
* @return {number}
*/
var connectSticks = function(sticks) {
const minHeap = [...sticks].sort((a, b) => a - b);
let result = 0;
while (minHeap.length > 1) {
const first = minHeap.shift();
const second = minHeap.shift();
const combinedCost = first + second;
result += combinedCost;
let insertIndex = 0;
while (insertIndex < minHeap.length && minHeap[insertIndex] < combinedCost) {
insertIndex++;
}
minHeap.splice(insertIndex, 0, combinedCost);
}
return result;
};