import java.util.Arrays; import static util.Asserts.assertEquals; /** * ç»å®ä¸ä¸ªç¨å符æ°ç»è¡¨ç¤ºç CPU éè¦æ§è¡çä»»å¡å表ãå ¶ä¸å å«ä½¿ç¨å¤§åç A - Z åæ¯è¡¨ç¤ºç26 ç§ä¸åç§ç±»çä»»å¡ã * ä»»å¡å¯ä»¥ä»¥ä»»æé¡ºåºæ§è¡ï¼å¹¶ä¸æ¯ä¸ªä»»å¡é½å¯ä»¥å¨ 1 个å使¶é´å æ§è¡å®ã * CPU å¨ä»»ä½ä¸ä¸ªå使¶é´å é½å¯ä»¥æ§è¡ä¸ä¸ªä»»å¡ï¼æè å¨å¾ å½ç¶æã *
* ç¶èï¼ä¸¤ä¸ªç¸åç§ç±»çä»»å¡ä¹é´å¿ é¡»æé¿åº¦ä¸º n çå·å´æ¶é´ï¼å æ¤è³å°æè¿ç» n 个å使¶é´å CPU 卿§è¡ä¸åçä»»å¡ï¼æè å¨å¾ å½ç¶æã *
* ä½ éè¦è®¡ç®å®æææä»»å¡æéè¦çæçæ¶é´ã *
* ç¤ºä¾ 1ï¼ *
* è¾å ¥: tasks = ["A","A","A","B","B","B"], n = 2 * è¾åº: 8 * æ§è¡é¡ºåº: A -> B -> (å¾ å½) -> A -> B -> (å¾ å½) -> A -> B. * æ³¨ï¼ *
* ä»»å¡çæ»ä¸ªæ°ä¸º [1, 10000]ã * n çåå¼èå´ä¸º [0, 100]ã *
* æ¥æºï¼åæ£ï¼LeetCodeï¼ * 龿¥ï¼https://leetcode-cn.com/problems/task-scheduler * è使å½é¢æ£ç½ç»ææãåä¸è½¬è½½è¯·èç³»å®æ¹ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã * * @author abomb4 2020-01-12 */ public class Solution621 { private int partition(int[] array, int left, int right) { // ä¸è½´æ°å¼ int pivot = array[right]; int i = left - 1; int j = right + 1; while (true) { do { j -= 1; } while (array[j] < pivot); do { i += 1; } while (array[i] > pivot); if (i < j) { int temp = array[j]; array[j] = array[i]; array[i] = temp; } else { return i; } } } /** * å¿«éæåº Hoare çï¼ç»å ¸å¿«æï¼ï¼ï¼ååºï¼å¤§çå¨åï¼ * * @param array æ°ç» */ private void qsort(int[] array, int left, int right) { if (left >= right) { return; } final int middle = partition(array, left, right); qsort(array, left, middle); qsort(array, middle, right); } public void sort(int[] array) { qsort(array, 0, array.length - 1); } public int leastInterval(char[] tasks, int n) { final int[] counts = new int[26]; for (final char task : tasks) { final int index = task - 'A'; counts[index]++; } sort(counts); System.out.println(Arrays.toString(counts)); return 1; } public static void main(String[] args) { final Solution621 s = new Solution621(); { final char[] var1 = new char[]{'A', 'A', 'A', 'B', 'B', 'B'}; final int var2 = 2; final int expect = 8; final int result = s.leastInterval(var1, var2); assertEquals(expect, result, "计ç®1"); } System.out.println("OK"); } }