首页 > 其他分享 >任务调度器

任务调度器

时间:2023-01-08 09:11:21浏览次数:35  
标签:tasks int res 字母 任务 任务调度 size

题目

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

然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。

你需要计算完成所有任务所需要的 最短时间 。

思路

image

  1. 求出每个字母最大的数量
  2. 将最大数量的字母依次放入
  3. 计算当前的最后一行数量
  4. 判断字母总数与容量的大小
  5. 选出最大的最为结果

代码

int leastInterval(vector<char>& tasks, int n) {
    sort(tasks.begin(),tasks.end());
    int res = 0;
    if(n==0){
        return tasks.size();
    }
    else{
        /**
         * vector<int> index(tasks.size(),0); 报错:
         * AddressSanitizer: heap-buffer-overflow on address 0x602000000618 at pc 0x00000034e7a6 bp 0x7ffca92cbfd0 sp 0x7ffca92cbfc8
         *   READ of size 4 at 0x602000000618 thread T0
         */
        // 统计每个字母出现的次数
        vector<int> index(2*tasks.size(),0);
        index[0] = 1;
        int pre = 0;
        for(int i=1;i<tasks.size();i++){
            if(tasks[i-1]==tasks[i]){
                index[pre] = index[pre]+1;
            }else{
                pre++;
                index[pre]=1;
            }
        }
        // 对次数大小进行排序
        sort(index.rbegin(),index.rend());
        int maxnum = *max_element(index.begin(),index.end());
        int lastrow = 1;
        // 判断有几个相同的最大数
        for(int i=1;index[i]!=0&&i<=n;i++){
            if(maxnum == index[i]){
                lastrow += 1;
            }
        }
        // 选出最大值返回结果
        if(((n+1)*(maxnum-1)+lastrow)>tasks.size())
            res = (n+1)*(maxnum-1)+lastrow;
        else
            res = tasks.size();
    }
    return res;
}

标签:tasks,int,res,字母,任务,任务调度,size
From: https://www.cnblogs.com/java-six/p/17034090.html

相关文章

  • DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块
    熟悉Taier的小伙伴们应该都知道,在11月7日发布的​​Taier1.3新版本​​中,我们融合了「DataSourceX模块」。这是十分重要的一个变化,移除Taier外部插件依赖,新增数据源插件相......
  • 基于SSH的任务调度系统的设计与实现(论文+PPT+源码)
    基于SSH的任务调度系统的设计与实现摘要随着科学技术的飞速发展和各行各业的分工愈发明细化,对于改革传统的人工任务调度方式的呼声越来越大。得益于快速发展的计算机技术,我......
  • 通过surging的后台托管服务编写任务调度并支持规则引擎自定义脚本
    简介    过去,如果在业务中需要处理任务调度的时候,大家都会使用第三方的任务调度组件,而第三方组件有一套自己的规则,在微服务的中显得那么格格不入,这样就会造成代码臃......
  • Spring的两种任务调度Scheduled和Async
    Spring提供了两种后台任务的方法,分别是:调度任务,@Schedule异步任务,@Async当然,使用这两个是有条件的,需要在spring应用的上下文中声明​​​<task:annotation-driven/>​​​......
  • 任务调度系统-业务线资源隔离
    问题背景最近注意到自己负责的一个任务调度集群碰到了计算资源业务线分配不均的问题(即业务线资源隔离没有做好):在任务高峰期,调度系统会将计算资源偏向分配给(执行耗时比较......
  • .net core 任务调度
      任务调度在项目开发中,已经变得越来越常见,每个项目一般都会出现几个需要定时程序来完成的,有的选择直接与web网站一起运行,有的选择将任务调度作为服务单独运行。还有的......
  • 定时任务、分布式任务调度框架
    同类产品对比类别QuartZxxl-jobSchedulerX2.0PowerJob任务类型内置Java内置Java、GLUEJava、Shell、Python等脚本内置Java、外置Java(FatJar)、Shell、Pyt......
  • 09Linux任务调度
    任务调度基本介绍crontab指令Linuxcrontab是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执......
  • ModStartCMS v5.3.0 任务调度记录,模块市场优化
    ModStart是一个基于Laravel模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。系统完全开源,基于Apache2.0开源协......
  • 分布式任务调度
    宙斯是一个完整的Hadoop的作业平台从Hadoop任务的调试运行到生产任务的周期调度宙斯支持任务的整个生命周期从功能上来说,支持:HadoopMapReduce任务的调试运行Hive任务的调......