资讯专栏INFORMATION COLUMN

[LeetCode] 621. Task Scheduler

Hujiawei / 2477人阅读

Problem

Given a char array representing tasks CPU need to do. It contains capital letters A to Z where different letters represent different tasks.Tasks could be done without original order. Each task could be done in one interval. For each interval, CPU could finish one task or just be idle.

However, there is a non-negative cooling interval n that means between two same tasks, there must be at least n intervals that CPU are doing different tasks or just be idle.

You need to return the least number of intervals the CPU will take to finish all the given tasks.

Example:
Input: tasks = ["A","A","A","B","B","B"], n = 2
Output: 8
Explanation: A -> B -> idle -> A -> B -> idle -> A -> B.

Note:

The number of tasks is in the range [1, 10000].
The integer n is in the range [0, 100].

Solution Using sort
class Solution {
    public int leastInterval(char[] tasks, int n) {
        int[] records = new int[26];
        for (char ch: tasks) {
            records[ch-"A"]++;
        }
        Arrays.sort(records);
        int i = 25;
        while (i >= 0 && records[i] == records[25]) i--;
        return Math.max(tasks.length, (records[25]-1)*(n+1) + (25-i));
    }
}
Using counter
class Solution {
    public int leastInterval(char[] tasks, int n) {
        int[] records = new int[26];
        int max = 0, maxCount = 0;
        for (char ch: tasks) {
            records[ch-"A"]++;
            if (records[ch-"A"] == max) maxCount++;
            else if (records[ch-"A"] > max) {
                maxCount = 1;
                max = records[ch-"A"];
            }
        }
        
        int parts = (n+1) * (max-1);
        int part = maxCount;
        return Math.max(tasks.length, parts+part);
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71842.html

相关文章

  • 【JAVA新生】拿协程开始写个异步io应用

    摘要:接下来,就看怎么用协程来实现异步了。直接拿的原始写代码会死人的。引入协程就是为了把上下连续的业务逻辑放在一个协程里,把与业务关系不大的的处理部分放到框架的里。第三部分是放弃掉执行权。这样一个只能接收打印一行的异步应用就写好了。 前面已经准备好了greenlet对应的Java版本了,一个删减后的kilim(http://segmentfault.com/blog/taowen/11900...

    singerye 评论0 收藏0
  • 【JAVA新生】echo server的第n种写法

    摘要:基本上所有的网络应用都会示范一个的写法。除了这些操作的主体是而不是,操作的是,而不是。以为例其过程是这样的这段代码就是创建一个,并注册一个,并把附着到上。关键之一显然是利用了协程的和,把回调转换成顺序的逻辑执行。 基本上所有的网络应用都会示范一个tcp的echo写法。前面我们已经看到了如何使用协程和异步io来做tcp服务器的第一步,accept。下面是一个完整的echo server的...

    Luosunce 评论0 收藏0
  • 爬虫框架WebMagic源码分析之Scheduler

    摘要:包主要实现类,这是一个抽象类,实现了通用的模板方法,并在方法内部判断错误重试去重处理等。重置重复检查就是清空,获取请求总数也就是获取的。至于请求总数统计,就是返回中维护的的大小。 Scheduler是Webmagic中的url调度器,负责从Spider处理收集(push)需要抓取的url(Page的targetRequests)、并poll出将要被处理的url给Spider,同时还负责...

    TIGERB 评论0 收藏0
  • 阿里云大数据MaxCompute计算资源分布以及LogView分析优化

    摘要:还可以看到任务运行的开始时间,结束时间,运行时间,点击就可以看到这个任务执行详情,包括有向无环图,和或节点具体的运行记录。 摘要: MaxCompute(原ODPS)的概念 海量数据处理平台,服务于批量结构化数据的存储和计算,提供海量数据仓库的解决方案以及针对大数据的分析建模服务.(官方文档有这里就不多做介绍了)官方文档链接 优势 用户不必关心分布式计算细节,从而达到分析大数据的目的。...

    raise_yang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<