Java aplicación LeetCode 621 programador de tareas (la violencia Dafa)

621. El programador de tareas

CPU a la lista de tareas a realizar por una representación de matriz de caracteres dada. Que comprende el uso de mayúsculas A - 26 tipos diferentes de tareas letras Z. Tarea puede llevarse a cabo en cualquier orden, y cada tarea puede ser ejecutado todo dentro de una unidad de tiempo. CPU puede realizar una tarea en cualquier unidad de tiempo, o en modo de espera.

Sin embargo, debe tener el mismo tipo entre las dos tareas de refrigeración longitud de tiempo n, de modo que al menos n unidades consecutivas de tiempo dentro de la CPU para realizar diferentes tareas, o el estado de espera.

Es necesario para calcular el menor tiempo para completar todas las tareas requeridas.

Ejemplo:

De entrada: tareas = [ "A", "A", "A", "B", "B", "B"], n = 2
de salida: 8
explican: A -> B -> (standby) -> A -> B -> (en espera) -> A -> B.

consejos:

El número total de tarea es [1, 10000].
n está en el intervalo [0, 100].

class Solution {
     public int leastInterval(char[] tasks, int n) {
        int[] count = new int[26];
        for (int i = 0; i < tasks.length; i++) {
            count[tasks[i]-'A']++;
        }//统计词频
        Arrays.sort(count);//词频排序,升序排序,count[25]是频率最高的
        int maxCount = 0;
        //统计有多少个频率最高的字母
        for (int i = 25; i >= 0; i--) {
            if(count[i] != count[25]){
                break;
            }
            maxCount++;
        }
        //n小于种类的时候,会比长度小
        //公式算出的值可能会比数组的长度小,取两者中最大的那个
        return Math.max((count[25] - 1) * (n + 1) + maxCount , tasks.length);
    }
}
Liberadas 1679 artículos originales · ganado elogios 20000 + · vistas 3,19 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105201675
Recomendado
Clasificación