Leetcode 621 任務排程(排序)

2021-10-02 17:41:07 字數 843 閱讀 5657

題目:621

題意:給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a - z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為 n 的冷卻時間,因此至少有連續 n 個單位時間內 cpu 在執行不同的任務,或者在待命狀態。你需要計算完成所有任務所需要的最短時間。

題解:將任務排序,並以n+1為一輪,逐步模擬求解

**:

/*

方法一:排序

*//*

class solution ;

for (int i = 0; i < tasks.size(); ++i)

m[tasks[i] - 'a']++;

sort(m, m + 26);

int ans = 0;

while (m[25] > 0)

sort(m, m + 26);

} return ans;

}};*//*

方法二:設計

*/class solution ;

for (int i = 0; i < tasks.size(); ++i)

m[tasks[i] - 'a']++;

sort(m, m + 26);

int idle = (m[25] - 1)*n;

for (int i = 24; i >= 0; --i)

return idle > 0 ? idle + tasks.size() : tasks.size();

}};

Leetcode 621任務排程

首先統計同型別的任務數,然後從大到小排序 因為數量多的任務才會因為重複,需要間隔期 排序不影響結果,無論是三個a和兩個b,還是兩個a和三個b結果是一樣的。想法是有多個桶 桶的個數取決於數量最多的任務數 桶的容量至少是n 1,桶內元素不重複,如果元素不能填滿,就需要填入冷卻時間。如果多餘元素數量大於等...

leetcode 621 任務排程器

給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為n的冷卻時...

LeetCode 621 任務排程器

給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為n的冷卻時...