LeetCode:Task Scheduler
来源:互联网 发布:解决80端口被占用 编辑:程序博客网 时间:2024/06/13 15:23
题目链接:https://leetcode.com/problems/task-scheduler/description/
解题思路:相同的任务之间至少隔了n个时间间隔。如果任务执行列表之间没有空闲,那么CPU从开始执行任务到结束,所需时间间隔至少为任务的总数。如果任务执行列表之间有空闲,那么所需时间间隔取决于最多的那个(些)任务。所以先统计每种任务的个数,对其进行排序,输出两种假设中的最大值。
代码如下:
class Solution {public: int leastInterval(vector<char>& tasks, int n) { int* tasklist = new int[26]{0}; int len = tasks.size(); for(int i = 0; i < tasks.size(); i++) { tasklist[tasks[i] - 65]++; } for(int i = 0; i < 26; i++) { for(int j = 25; j > i; j--) { if (tasklist[j] > tasklist[j-1]) { int tmp = tasklist[j]; tasklist[j] = tasklist[j-1]; tasklist[j-1] = tmp; } } if (tasklist[i] == 0) { break; } } int m = tasklist[0], d = 0; for(int i = 0; i < 26; i++) { if (m == tasklist[i]) { d++; } } return max(len, (m-1)*(n+1)+d); }};
我参考了此博客http://www.cnblogs.com/grandyang/p/7098764.html,这篇文章有更为简洁的代码和详尽的解释,谢谢!。
阅读全文
0 0
- LeetCode 621. Task Scheduler
- 【LeetCode】621. Task Scheduler
- leetcode 621 Task Scheduler
- [Leetcode 621] Task Scheduler
- [LeetCode] 621. Task Scheduler
- Leetcode 621. Task Scheduler
- [leetcode]621. Task Scheduler
- leetcode 621. Task Scheduler
- [leetcode] 621 Task Scheduler
- Leetcode:621. Task Scheduler
- LeetCode Task Scheduler
- [LeetCode]621. Task Scheduler
- LeetCode-Task Scheduler
- LeetCode:Task Scheduler
- leetcode练习 Task Scheduler
- leetCode-Task Scheduler
- leetcode 621. Task Scheduler
- Leetcode 621. Task Scheduler
- 【未完成】线性微分方程与常数变易法
- 冒泡和选择排序的理解
- OpenShift Origin v3.7 安装-手工部署All-In-One Server
- 简单的外键链接
- 面试系列:无序的子数
- LeetCode:Task Scheduler
- 值得注意的append
- install libfreenect2 on ubuntu 16.04
- 定义一个计算机类:属性:品牌;价格;颜色; 方法:(1)编程的功能 (2)上网的功能 实例化两个对象:“lenovo”;“hasee”
- iOS多线程基本操作
- 开源许可证
- 使用 进制转换的方式,生成枚举密码!!
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- 用函数模板求三整数,浮点数或字母的最大值