LeetCode 621. 任务调度器(贪心)
1. 题目
给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。
然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。
你需要计算完成所有任务所需要的最短时间。
示例 1:
输入: tasks = ["A","A","A","B","B","B"], n = 2
输出: 8
执行顺序: A -> B -> (待命) -> A -> B -> (待命) -> A -> B.注:
任务的总个数为 [1, 10000]。
n 的取值范围为 [0, 100]。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/task-scheduler
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 贪心解题
- 我找出最多的那个任务,假如是A
- 在每个两个A之间至少需要 n 个空位(可以干别的任务,也可以空着)
- 最后一个A后面还要跟着一些与A数量相同的任务(例如,1B,1C等)
- 还有一点,如果没有冲突,那么答案至少是总任务数量
class Solution {public:int leastInterval(vector<char>& tasks, int n) {int count[26] = {0}, maxNum = -1, sameWithMax = 0, len = tasks.size();for(char c:tasks)count[c-'A']++;for(int i = 0; i < 26; i++){if(count[i] > maxNum){maxNum = count[i];//数量最多的任务sameWithMax = -1;}if(count[i] == maxNum){sameWithMax++;//数量和最大的一样的(其他任务种类)}}return max((maxNum-1)*n+maxNum+sameWithMax, len);}
};
LeetCode 621. 任务调度器(贪心)相关推荐
- leetcode 621. 任务调度器(贪心算法)
给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表.其中每个字母表示一种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.在任何一个单位时间,CPU ...
- Leetcode 621. 任务调度器 解题思路及C++实现
方法一:贪心算法 解题思路: 使用贪心的思想,先把出现最多的任务分配了(即每隔n个单位时间分配一个任务),然后再把其它任务填上.如下图 所以需要先计算各任务出现的次数,找到出现最多的任务,程序中使用m ...
- leetcode - 621. 任务调度器
给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.CPU 在 ...
- leetcode 621. Task Scheduler | 621. 任务调度器(Java)
题目 https://leetcode.com/problems/task-scheduler/ 题解 似懂非懂的答案,https://leetcode-cn.com/problems/task-sc ...
- 【LeetCode笔记】621. 任务调度器(Java、桶)
文章目录 题目描述 代码 && 思路 1. 直白的 ac 做法 O(n).O(n) 2. 桶排思想的做法 O(n).O(n) 二刷 打卡第十六天- 题目描述 有点阅读题的意思,可以结合 ...
- LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)
dsadas /**思路:找下一个排列,并且尽可能小,所以我们应该找一序列中从左边开始的"较小值"与"较大值"交换,但是为了尽可能小应该满足: 1." ...
- 621. 任务调度器
文章目录 1.题目 2.代码 1.题目 题目要求 eg: 输入: tasks = ["A","A","A","B",&q ...
- LeetCode第 621 题:任务调度器 (C++)
621. 任务调度器 - 力扣(LeetCode) 做法很多,这位同学的解释是最通俗易懂的:[任务调度器]C++ 桶子_配图理解 class Solution { public:int leastIn ...
- LeetCode-621. 任务调度器
621. 任务调度器 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时 ...
最新文章
- 假如鲁迅是程序员......
- HSRP多组基础配置实验
- ios 自定义拍照页面_无需解锁也能使用的iOS实用小组件
- 群晖按装mysql_如何连接群晖里的MYSQL数据库
- C++:08---成员变量初始化方式
- [基础篇]ESP32-RTOS-SDK教程(一)之Windows环境搭建
- 那是财务自由的声音!寒武纪上市造就一批85后亿万富翁
- jetty jndi mysql_jetty配置jndi数据源
- 寻找百度图片搜索接口历程--one
- DC工具的基本使用(一)
- html蒙版代码是什么意思,图层蒙版是什么意思
- [工具分享]阿里云语音合成方言和外语Windows版本
- Jack Platts:Polkadot 在 Staking 上的设计
- html5四季特点,成都气候:成都温度、成都天气、成都常年气温、成都四季特点,chengdu weather...
- 资产监测设备帮助提升莴苣养殖的产量
- 计算机关闭自带杀毒,关闭联想自带杀毒软件的步骤
- 计科1705露营活动策划案
- splint在linux的简单使用
- 红帽 linux 安装gns3,GNS3 on Centos / Redhat / Fedora源码安装
- 《现代软件工程-构建之法》读书笔记(1)
热门文章
- 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用
- Win10/Win7小技巧:教你如何彻底关闭系统进程
- cocoapods 命令
- TCP中间件_个人方案
- 2015-8-10工作日志
- C#中用委托实现C++的回调函数
- AliasDB:简单统一灵活的数据库访问库(支持MSSQL/MySQL/SQLite/Oracle/ODBC/OleDb)适用于中小型系统...
- js 获取url的get传值函数
- 邓总的vim配置,需要的自己拿走~
- druid删除数据_Apache druid 删除数据流程 0.13