621.task-scheduler.go 390 B

12345678910111213141516171819
  1. func leastInterval(tasks []byte, n int) int {
  2. freq := make([]int, 26)
  3. for _, t := range tasks {
  4. freq[t-'A']++
  5. }
  6. max, cnt := freq[0], 0
  7. for _, i := range freq {
  8. if max < i {
  9. max, cnt = i, 1
  10. } else if max == i {
  11. cnt++
  12. }
  13. }
  14. res := (max-1)*(n+1) + cnt
  15. if l := len(tasks); res < l {
  16. return l // If n is small enough, all tasks can be processed one by one
  17. }
  18. return res
  19. }