当前位置: 首页 > news >正文

leetcode621. 任务调度器

给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表,用字母 A 到 Z 表示,以及一个冷却时间 n。每个周期或时间间隔允许完成一项任务。任务可以按任何顺序完成,但有一个限制:两个 相同种类 的任务之间必须有长度为 n 的冷却时间。

返回完成所有任务所需要的 最短时间间隔 。

示例 1:

输入:tasks = ["A","A","A","B","B","B"], n = 2

输出:8

解释:

在完成任务 A 之后,你必须等待两个间隔。对任务 B 来说也是一样。在第 3 个间隔,A 和 B 都不能完成,所以你需要待命。在第 4 个间隔,由于已经经过了 2 个间隔,你可以再次执行 A 任务。

示例 2:

输入:tasks = ["A","C","A","B","D","B"], n = 1

输出:6

解释:一种可能的序列是:A -> B -> C -> D -> A -> B。

由于冷却间隔为 1,你可以在完成另一个任务后重复执行这个任务。

示例 3:

输入:tasks = ["A","A","A","B","B","B"], n = 0

输出:6

解释:一种可能的序列为:A -> B -> idle -> idle -> A -> B -> idle -> idle -> A -> B。

只有两种任务类型,A 和 B,需要被 3 个间隔分割。这导致重复执行这些任务的间隔当中有两次待命状态。

提示:

  • 1 <= tasks.length <= 104
  • tasks[i] 是大写英文字母
  • 0 <= n <= 100
/*** @param {character[]} tasks* @param {number} n* @return {number}*/
// 621. 任务调度器 
// lodash.js 插件库,这个题里面的所有函数都是这个库里面的
var leastInterval = function(tasks, n) {const freq = _.countBy(tasks);// maxExec 是任务数最多的次数 maxExec// 方法返回一个给定对象自己的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。const maxExec = Math.max(...Object.values(freq));// maxCount是 最多任务数量的任务种类let maxCount = 0;Object.values(freq).forEach(v => {if (v === maxExec) {maxCount++;}})// n是同任务的等待时间/冷却时间return Math.max((maxExec - 1) * (n + 1) + maxCount, tasks.length);
};

补充说明:

const freq = _.countBy(tasks);分析这段代码

这段代码使用了Lodash库中的countBy函数,它用于对数组中的元素进行分组计数。

具体来说,_.countBy(tasks)会对tasks数组中的每个元素进行计数,并返回一个对象,其中对象的键是数组中的元素,值是该元素在数组中出现的次数。

举个例子,如果tasks数组如下:

const tasks = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];

那么执行_.countBy(tasks)后的结果将会是:

{apple: 2,banana: 3,orange: 1
}

这个结果表示'apple'出现了2次,'banana'出现了3次,而'orange'出现了1次。

相关文章:

  • C++【类和对象】(构造函数与析构函数)
  • 全球200多个国财政数据(1991-2023年)
  • 学习之什么是装饰器
  • Java | Leetcode Java题解之第435题无重叠区间
  • 5.3 克拉默法则、逆矩阵和体积
  • Kafka系列之:安装使用kafka_exporter详细步骤
  • 基于大数据的亚健康人群数据分析及可视化系统
  • 828华为云征文|华为云Flexus X实例:快速搭建FTP服务器,高效便捷!
  • 计算机毕业设计 基于Python的热门微博数据可视化分析系统的设计与实现 Python+Django+Vue 可视化大屏 附源码 讲解 文档
  • 给Ubuntu虚拟机设置静态IP地址(固定IP)
  • 安全开发指南
  • ESXi 5.5 系统克隆到SD卡或USB磁盘上
  • 利士策分享,攀登职场高峰:成功者的十大特质
  • 示例说明:sql语法学习
  • 基于YOLOv5的农作物病虫害识别系统设计与实现(PYQT+web端+微信小程序+YOLOv5+训练数据集+论文+部署文档+开题报告)
  • Codepen 每日精选(2018-3-25)
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Github访问慢解决办法
  • Java 内存分配及垃圾回收机制初探
  • LeetCode18.四数之和 JavaScript
  • markdown编辑器简评
  • Python学习之路16-使用API
  • windows下mongoDB的环境配置
  • 解决iview多表头动态更改列元素发生的错误
  • 前端性能优化——回流与重绘
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 数组大概知多少
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​如何在iOS手机上查看应用日志
  • !$boo在php中什么意思,php前戏
  • #《AI中文版》V3 第 1 章 概述
  • #预处理和函数的对比以及条件编译
  • (10)ATF MMU转换表
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (四) 虚拟摄像头vivi体验
  • (图)IntelliTrace Tools 跟踪云端程序
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • .gitattributes 文件
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 成都线下面基会拉开序幕
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET导入Excel数据
  • //TODO 注释的作用
  • @ConfigurationProperties注解对数据的自动封装
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [20161101]rman备份与数据文件变化7.txt