El costo mínimo en Sticks Connect

Tiene alguna  sticks con longitudes de números enteros positivos.

Puede conectar dos palos de longitudes  X y  Y sean en uno mediante el pago de un costo de  X + Y. De llevar a cabo esta acción hasta que haya un palo restante.

Devolver el costo mínimo de la conexión de toda la dada  sticks en una sola vara de esta manera.

Ejemplo 1:

Input: sticks = [2,4,3]
Output: 14

Ejemplo 2:

Input: sticks = [1,8,3,5]
Output: 30

Ideas: con PQ, cada sondeo de mínimo dos, para la adición; Tiempo: O (nlogn) Espacio: O (n)

class Solution {
    public int connectSticks(int[] sticks) {
        if(sticks == null || sticks.length == 0) {
            return 0;
        }
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
        for(int i = 0; i < sticks.length; i++) {
            pq.offer(sticks[i]);
        }
        int cost = 0;
        while(pq.size() >= 2) {
            int a = pq.poll();
            int b = pq.poll();
            pq.add(a + b);
            cost += (a + b);
        }
        return cost;
    }
}

 

Publicados 673 artículos originales · alabanza ganado 13 · vistas 180 000 +

Supongo que te gusta

Origin blog.csdn.net/u013325815/article/details/105176280
Recomendado
Clasificación