ARTS Week 38

Algorithm

本周的算法题为 2432. 处理用时最长的那个任务的员工

共有 n 位员工,每位员工都有一个从 0n - 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)
alt

接着,使用Ctrl+Shift+P,选择Markdown generate header number,一键生成标题编号。

Share

“若不披上这件衣裳,众生又怎知我尘缘已断、金海尽干?”

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AR7_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值