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. 任务调度器(贪心)相关推荐

  1. leetcode 621. 任务调度器(贪心算法)

    给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表.其中每个字母表示一种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.在任何一个单位时间,CPU ...

  2. Leetcode 621. 任务调度器 解题思路及C++实现

    方法一:贪心算法 解题思路: 使用贪心的思想,先把出现最多的任务分配了(即每隔n个单位时间分配一个任务),然后再把其它任务填上.如下图 所以需要先计算各任务出现的次数,找到出现最多的任务,程序中使用m ...

  3. leetcode - 621. 任务调度器

    给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.CPU 在 ...

  4. leetcode 621. Task Scheduler | 621. 任务调度器(Java)

    题目 https://leetcode.com/problems/task-scheduler/ 题解 似懂非懂的答案,https://leetcode-cn.com/problems/task-sc ...

  5. 【LeetCode笔记】621. 任务调度器(Java、桶)

    文章目录 题目描述 代码 && 思路 1. 直白的 ac 做法 O(n).O(n) 2. 桶排思想的做法 O(n).O(n) 二刷 打卡第十六天- 题目描述 有点阅读题的意思,可以结合 ...

  6. LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)

    dsadas /**思路:找下一个排列,并且尽可能小,所以我们应该找一序列中从左边开始的"较小值"与"较大值"交换,但是为了尽可能小应该满足: 1." ...

  7. 621. 任务调度器

    文章目录 1.题目 2.代码 1.题目 题目要求 eg: 输入: tasks = ["A","A","A","B",&q ...

  8. LeetCode第 621 题:任务调度器 (C++)

    621. 任务调度器 - 力扣(LeetCode) 做法很多,这位同学的解释是最通俗易懂的:[任务调度器]C++ 桶子_配图理解 class Solution { public:int leastIn ...

  9. LeetCode-621. 任务调度器

    621. 任务调度器 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时 ...

最新文章

  1. 假如鲁迅是程序员......
  2. HSRP多组基础配置实验
  3. ios 自定义拍照页面_无需解锁也能使用的iOS实用小组件
  4. 群晖按装mysql_如何连接群晖里的MYSQL数据库
  5. C++:08---成员变量初始化方式
  6. [基础篇]ESP32-RTOS-SDK教程(一)之Windows环境搭建
  7. 那是财务自由的声音!寒武纪上市造就一批85后亿万富翁
  8. jetty jndi mysql_jetty配置jndi数据源
  9. 寻找百度图片搜索接口历程--one
  10. DC工具的基本使用(一)
  11. html蒙版代码是什么意思,图层蒙版是什么意思
  12. [工具分享]阿里云语音合成方言和外语Windows版本
  13. Jack Platts:Polkadot 在 Staking 上的设计
  14. html5四季特点,成都气候:成都温度、成都天气、成都常年气温、成都四季特点,chengdu weather...
  15. 资产监测设备帮助提升莴苣养殖的产量
  16. 计算机关闭自带杀毒,关闭联想自带杀毒软件的步骤
  17. 计科1705露营活动策划案
  18. splint在linux的简单使用
  19. 红帽 linux 安装gns3,GNS3 on Centos / Redhat / Fedora源码安装
  20. 《现代软件工程-构建之法》读书笔记(1)

热门文章

  1. 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用
  2. Win10/Win7小技巧:教你如何彻底关闭系统进程
  3. cocoapods 命令
  4. TCP中间件_个人方案
  5. 2015-8-10工作日志
  6. C#中用委托实现C++的回调函数
  7. AliasDB:简单统一灵活的数据库访问库(支持MSSQL/MySQL/SQLite/Oracle/ODBC/OleDb)适用于中小型系统...
  8. js 获取url的get传值函数
  9. 邓总的vim配置,需要的自己拿走~
  10. druid删除数据_Apache druid 删除数据流程 0.13