码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 621: Task Scheduler

时间:2017-09-18 13:23:04      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:list   []   bsp   add   off   div   --   empty   dal   

class Solution {
    class Task {
        public char task;
        public int numTasks;
    }
    public int leastInterval(char[] tasks, int n) {
        if (tasks.length == 0) {
            return 0;
        }

        Map<Character, Task> map = new HashMap<>();
        for (char c : tasks) {
            if (!map.containsKey(c)) {
                Task t = new Task();
                t.task = c;
                t.numTasks = 0;
                map.put(c, t);
            }
            map.get(c).numTasks++;
        }
        Queue<Task> queue = new PriorityQueue<>((t1, t2) -> t2.numTasks - t1.numTasks);
        queue.addAll(map.values());
        int result = 0;
        while (!queue.isEmpty()) {
            int k = n + 1;
            List<Task> taskList = new ArrayList<>();
            while (k > 0 && !queue.isEmpty()) {
                Task current = queue.poll();
                current.numTasks--;
                taskList.add(current);
                result++;
                k--;
            }
            
            for (Task task : taskList) {
                if (task.numTasks > 0) {
                    queue.offer(task);
                }
            }
            if (queue.isEmpty()) break;
            result += k;
        }
        return result;
    }
}

 

LeetCode 621: Task Scheduler

标签:list   []   bsp   add   off   div   --   empty   dal   

原文地址:http://www.cnblogs.com/shuashuashua/p/7542505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!