You have some sticks
with positive integer lengths.
You can connect any two sticks of lengths X
and Y
into one stick by paying a cost of X + Y
. You perform this action until there is one stick remaining.
Return the minimum cost of connecting all the given sticks
into one stick in this way.
Example 1:
Input: sticks = [2,4,3] Output: 14
Example 2:
Input: sticks = [1,8,3,5] Output: 30
class Solution { public int connectSticks(int[] sticks) { // Arrays.sort(sticks); PriorityQueue<Integer> pq = new PriorityQueue<>(); for (int num : sticks) { pq.offer(num); } int res = 0; while (pq.size() > 1) { int sum = pq.poll() + pq.poll(); pq.offer(sum); res += sum; } return res; } }
[LC] 1167. Minimum Cost to Connect Sticks
原文:https://www.cnblogs.com/xuanlu/p/12711203.html