任务调度器

news2025/7/10 14:12:50

题目链接

任务调度器

题目描述


注意点

  • tasks[i] 是大写英文字母
  • 任务可以以任意顺序执行
  • 两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间

解答思路

  • 利用桶思想,将不同的字母放进同一个桶中,桶的数量为tasks中字母出现频率最高的次数,每个桶的容量大小为n,如下图所示

  • 关键是要找到两个数字:一是字母出现频率最高的次数maxTimes,二是除去前面(n + 1)个字母或null组成的桶外最后一个桶需要安排的剩余字母exceNums,最终可以计算出完成所有任务所需要的最短时间为(maxTimes - 1) * (n + 1) + exceNums
  • 要注意一种特殊情况,如果有多个频率maxTimes的字母,其数量大于n,则每个桶会装不同的字母会有多个方案,但是在该情况下一定有方案保证任意两个任务之间的相隔时间大于等于n,此时无需考虑待命状态,任务的数量就算完成所有任务所需要的最短时间

代码

class Solution {
    public int leastInterval(char[] tasks, int n) {
        // 字母出现频率最高的次数
        int maxTimes = 0;
        int[] arr = new int[26];
        for (char c : tasks) {
            arr[c - 'A'] += 1;
            maxTimes = Math.max(maxTimes, arr[c - 'A']);
        }
        // 除去前面(n + 1)个字母或null组成的桶外最后一个桶需要安排的剩余字母
        int exceNums = 0;
        for (int i = 0; i < 26; i++) {
            // arr[i]必定小于等于maxTimes,小于时说明前面的桶已经能将该字母安排完,等于时最后一个桶也需要安排该字母
            if (arr[i] == maxTimes) {
                exceNums++;
            }
        }
        return Math.max((maxTimes - 1) * (n + 1) + exceNums, tasks.length);
    }
}

关键点

  • 理解桶思想
  • 怎么找到maxTimes和exceNums两个关键数字
  • 注意如果有多个频率maxTimes的字母的特殊情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1103349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保序回归与金融时序数据

保序回归在回归问题中的作用是通过拟合一个单调递增或递减的函数&#xff0c;来保持数据点的相对顺序特性。 一、保序回归的作用 主要用于以下情况&#xff1a; 1. 有序数据&#xff1a;当输入数据具有特定的顺序关系时&#xff0c;保序回归可以帮助保持这种顺序关系。例如&…

ai配音怎么弄?推荐一款免费好用的ai配音软件

你们做短视频卡在了哪&#xff1f;剪辑&#xff1f;文案&#xff1f;还是配音&#xff1f;我身边很多朋友都卡在了配音&#xff0c;因为他们都觉得自己的声音不好听&#xff0c;普通话不标准&#xff0c;不够自信&#xff0c;那我们到底该如何解决短视频配音难题呢&#xff1f;…

动态规划:11分割等和子集

动态规划&#xff1a;11分割等和子集 416. 分割等和子集 这道题目初步看&#xff0c;和如下两题几乎是一样的&#xff0c;大家可以用回溯法&#xff0c;解决如下两题 698.划分为k个相等的子集473.火柴拼正方形 这道题目是要找是否可以将这个数组分割成两个子集&#xff0c;使…

C++:继承的概念和用法

文章目录 继承的定义基类和派生类的对象赋值转换继承中的作用域派生类的默认成员函数几个继承小点继承理论的演示 菱形继承和菱形虚拟继承虚拟继承 本篇主要总结的内容有 什么是继承继承的一些概念菱形继承和虚拟继承继承的优缺点对比 继承的定义 继承是代码复用的一种重要手…

Redis 主从复制,哨兵,集群——(1)主从复制篇

目录 1. Redis 主从复制是什么&#xff1f; 2. Redis 主动复制能干嘛&#xff1f; 2.1 读写分离 2.2 容灾恢复 2.3 数据备份 2.4 水平扩展支撑高并发 3. Redis 主从复制配置项 3.1 配从库不配主库 3.2 权限密码配置 3.3 基本操作命令 4. 案例演示 4.1 案例说明 4.…

leetCode 647.回文子串 动态规划 + 优化空间 / 中心扩展法 + 双指针

647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串&#x…

Springboot-MyBatisPlus-01

一 创建项目&#xff0c;选择spring boot 初始化&#xff0c;配置相关信息 第五步创建实体类 二 快速开发实体类的jar包--lombok <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12<…

Pycharm中终端不显示虚拟环境名解决方法

文章目录 一、问题说明&#xff1a;二、解决方法&#xff1a;三、重启Pycharm 一、问题说明&#xff1a; Pycharm中打开项目配置完需要的虚拟环境后&#xff0c;在Terminal&#xff08;终端&#xff09;中无法切换及显示当前需要运行代码的虚拟环境。 比如以下一种情况&#…

TOUGH2软件教程、CO2地质封存

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的&#xff0c;旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同&#xff0c;TOUGH系列软件采用模块化设计和有限积分差网格剖分方法&#xff0c;通过配合不同状态方程&#xff08;EOS模…

人体分割模型ACE2P与M2FP,解析人脸人体各部件属性,语义化分析

前言 在做某任务的时候&#xff0c;需要对人物图片进行预处理。 预处理的要求就是要将图片中的人物各部件分割出来&#xff0c;标识为各种不同颜色&#xff0c;比如脸部为蓝色&#xff0c;脖颈部位绿色&#xff0c;其他地方为红色 最初任务使用的PaddleSeg中基于CelebAMask-HQ…

C# RestoreFormer 图像(人脸面部)修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…

优维低代码实践:片段

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

Unity3D 基础——使用 Vector3.Distance 计算两个物体之间的距离

Vector3-Distance - Unity 脚本 APIhttps://docs.unity.cn/cn/current/ScriptReference/Vector3.Distance.html 1.在场景中新建两个 Cube 立方体&#xff0c;在 Scene 视图中将两个 Cude的位置错开。 2.新建 C# 脚本 Distance.cs&#xff08;写完记得保存&#xff09; using …

PS 学习笔记

书籍&#xff1a;Photoshop 2022从入门到精通-敬伟-微信读书 1. PS 常用快捷键 复位右侧基本工作栏&#xff1a;【窗口】-【工作区】- 【复位基本功能】 Ctrl 鼠标滚轮&#xff1a;主界面图片左右滚动Shift 鼠标滚轮&#xff1a;主界面图片上下滚动Alt 鼠标滚轮&#xff1…

StarUML的介绍与使用

文章目录 简介视图StarUML创建视图类图用例图时序图 简介 UML&#xff1a;统一建模语言&#xff0c;用模型元素组成的不同视图从各个维度来描述系统 StarUML为常用系统建模工具之一 视图 常见视图的概念可参考&#xff1a;UML常见的几种视图 包括&#xff1a;用例图、顺序图…

联想G50笔记本直接使用F键功能(F1~F12)需要在BIOS设置关闭热键功能可以这样操作!

如果开启启用热键模式按F1就会出现FnF1的效果&#xff0c;不喜欢此方式按键的用户可以进入BIOS设置界面停用热键模式即可。 停用热键模式方法如下&#xff1a; 1、重新启动笔记本电脑&#xff0c;当笔记本电脑屏幕出现Lenovo标识的时候&#xff0c;立即按FnF2进入BIOS设置界面…

ssm+vue的养老院老人健康监护平台(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的养老院老人健康监护平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

从入门到进阶 之 ElasticSearch 节点配置 集群篇

&#x1f339; 以上分享 ElasticSearch 安装部署&#xff0c;如有问题请指教写。&#x1f339;&#x1f339; 如你对技术也感兴趣&#xff0c;欢迎交流。&#x1f339;&#x1f339;&#x1f339; 如有需要&#xff0c;请&#x1f44d;点赞&#x1f496;收藏&#x1f431;‍&a…

基于SSM+Vue的咖啡销售系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

全面中文大语言模型评测来啦!香港中文大学最新研究

ChatGPT 的一声号角吹响了2023年全球大语言模型的竞赛。 2023年初以来&#xff0c;来自工业界和研究机构的各种大语言模型层出不穷&#xff0c;特别值得一提的是&#xff0c;中文大语言模型也如雨后春笋般&#xff0c;在过去的半年里不断涌现。 与此同时&#xff0c;和如何训…