Untitled
unknown
plain_text
9 months ago
1.1 kB
5
Indexable
class Solution {
public int connectSticks(int[] sticks) {
// Initialize a minimum heap (priority queue) to store the sticks in ascending order
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
// Add all the sticks to the heap
for (int stick : sticks) {
minHeap.offer(stick);
}
// Initialize the total cost to connect all the sticks
int totalCost = 0;
// Continue combining sticks until only one stick remains
while (minHeap.size() > 1) {
// Retrieve and remove the two smallest sticks
int stick1 = minHeap.poll();
int stick2 = minHeap.poll();
// Calculate the cost of connecting the two smallest sticks
int cost = stick1 + stick2;
// Add the cost to the total cost
totalCost += cost;
// Add the combined stick back to the heap
minHeap.offer(cost);
}
// Return the total cost to connect all the sticks
return totalCost;
}
}
Editor is loading...
Leave a Comment