Algorithm
本周的算法题为 2432. 处理用时最长的那个任务的员工
共有 n
位员工,每位员工都有一个从 0
到 n - 1
的唯一 id 。
给你一个二维整数数组 logs
,其中 logs[i] = [idi, leaveTimei]
:
-
idi
是处理第i
个任务的员工的 id ,且 -
leaveTimei
是员工完成第i
个任务的时刻。所有leaveTimei
的值都是 唯一 的。
注意,第 i
个任务在第 (i - 1)
个任务结束后立即开始,且第 0
个任务从时刻 0
开始。
返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足,则返回几人中 最小 的 id 。
示例 1:
输入:n = 10, logs = [[0,3],[2,5],[0,9],[1,15]]
输出:1
解释:
任务 0 于时刻 0 开始,且在时刻 3 结束,共计 3 个单位时间。
任务 1 于时刻 3 开始,且在时刻 5 结束,共计 2 个单位时间。
任务 2 于时刻 5 开始,且在时刻 9 结束,共计 4 个单位时间。
任务 3 于时刻 9 开始,且在时刻 15 结束,共计 6 个单位时间。
时间最长的任务是任务 3 ,而 id 为 1 的员工是处理此任务的员工,所以返回 1 。
实现代码如下:
const hardestWorker = function (n, logs) {
let longestDuration = logs[0][1];
let employeeDurationDifferences = [[logs[0][0], logs[0][1]]];
logs.forEach((log, index) => {
if (index >= logs.length - 1) {
return;
}
const currentTimeDiff = logs[index + 1][1] - logs[index][1];
employeeDurationDifferences.push([logs[index + 1][0], currentTimeDiff]);
longestDuration = Math.max(longestDuration, currentTimeDiff);
});
const longestDurationEmployees = employeeDurationDifferences.filter(diff => diff[1] === longestDuration);
// 如果只存在一个员工是这个任务时长,则直接返回该员工的ID
if (longestDurationEmployees.length == 1) {
return longestDurationEmployees[0][0]
}
let longestDurationEmployeeIds = [];
longestDurationEmployees.forEach(record => {
longestDurationEmployeeIds.push(record[0]);
});
return Math.min(...longestDurationEmployeeIds);
}
解题思路:
首先,通过logs
二维数组,获取到每个员工的ID
以及对应的任务时长,同时,使用Math.max()
函数求得任务时长最大值,然后,筛选任务时长最大值的员工ID
,如果只有一个员工,则直接返回结果,否则,通过遍历获取全部的员工ID
,再使用Math.min()
函数,求得最小值。
Review
Violence against women and girls at 'epidemic' levels
英国警方发布了一份报告,强调针对妇女和女孩的暴力事件急剧增加。报告指出,厌女症和针对妇女的犯罪行为达到了创纪录的水平。据报道,一年内有100多万起此类犯罪。这可能只是冰山一角。将会有大量的暴力事件没有被报道。伦敦大都会警察局撰文描述了这一问题的严重性。报告称:“针对妇女和女孩的暴力是地方性的、系统性的,对社会的威胁与恐怖主义一样严重。”它补充说,针对妇女的犯罪占所有记录犯罪的20%。它说:“我们必须采取行动,改变妇女和女孩无法接受的现实。”
该报告由英国国家警察局长委员会和警务学院发布。副警长麦琪·布莱斯称这些数据“令人震惊”。她说:“对妇女和女孩的暴力行为是国家的紧急情况。作为一个社会,我们需要向前迈进,做出改变,不再认为针对妇女和女孩的暴力是不可避免的。”警方表示:“每12名女性中就有1人会成为暴力的受害者。每六起谋杀案中就有一起是家庭暴力造成的。每20个人中就有1个人——其中超过200万人——在他们的生活中会对妇女和女孩施暴。”报告称,基于性别的暴力犯罪包括骚扰、谋杀、网络性虐待、强奸和跟踪。
Tip
markdown 文档如何自动加上标题编号?
因为我那个记录问题的markdown
文档,需要时不时更新一下内容,所以,标题的编号也要同步更新,这个文档内容那么多,改起来工作量很大,只能研究一下,怎么在markdown
文档里自动加上标题编号。
在VSCode
里有插件能够实现这个需求,自己也使用了一段时间,感觉还是很方便的,只是因为电脑更新系统,不小心卸载了这个插件,不太记得插件名字了,只能使用另一个———— Markdown Header。可使用这个插件增加标题编号时,发现它并不是基于现有的标题编号进行更新,而是额外增加了标题编号,比如1.1 1.1
,加上要清空标题编号没有生效,只能看下,怎么把当前文档里的标题编号全都清空,然后,再使用这个插件自动生成标题编号,解决思路是,在VSCode
中使用正则表达式搜索,匹配到# 1.2.3
类似的格式,一个#
加一个空格,然后是标题编号,全部替换成#
即可。
(#\s+)(\b\d+(\.\d+)*\b)
接着,使用Ctrl+Shift+P
,选择Markdown generate header number
,一键生成标题编号。
Share
“若不披上这件衣裳,众生又怎知我尘缘已断、金海尽干?”
本文由 mdnice 多平台发布