栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

[hashmap][模拟]leetcode2365:任务调度器 II(medium)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[hashmap][模拟]leetcode2365:任务调度器 II(medium)

题目:


题解:

思路:模拟

  • 由于题目规定了是按顺序完成所有的任务,所以不考虑限制条件的话,每完成一个任务就花费一个时间。限制考虑限制条件的话,就需要使用一个 hashmap 来记录相同类型任务上次的完成时间,若相同的任务上次被完成了,则本次任务的时间为 max(day,same[t]+space+1),之后将完成本次任务的时间更新在 hashmap 中即可。

代码如下:

using LL = long long;
class Solution {
public:
    // 由于要求相同类型的任务必须间隔 space 天,因此需要使用一个 hashmap 来记录上一次相同任务的完成时间,以便于下次遇到相同任务时,保证时间间隔最少为 space 天
    long long taskSchedulerII(vector& a, int space) {
        unordered_map same;
        LL day=0;
        for(int x:a)
        {
            // 不考虑相同任务的时间间隔是每运行一个任务,时间+1的
            day+=1;
            // 遇到同类型的任务,为了保证本任务能运行,与上次任务的时间至少间隔 space 天
            if(same.count(x))day=max(day,same[x]+space+1);
            // 更新完成该任务的时间
            same[x]=day;
        }
        return day;
    }
};
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040613.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号