华为OD机试 - 打印任务排序 - 队列(Java 2024 C卷 100分)

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
      • 1、输入
      • 2、输出
      • 3、说明
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别用数字1-9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。

请编写一个程序,根据输入的打印队列,输出实际的打印顺序。

二、输入描述

输入一行,为每个任务的优先级,优先级之间用逗号隔开,优先级取值范围是1~9。

三、输出描述

输出一行,为每个任务的打印顺序,打印顺序从0开始,用逗号隔开。

1、输入

9,3,5

2、输出

0,2,1

3、说明

  1. 队列头部任务的优先级为9,优先级最高,序号为0;
  2. 然后队列头部任务优先级为3,队列中还有优先级为5的任务,优先级3任务被移到队列尾部;
  3. 然后打印优先级为5的任务,故其序号为1;
  4. 最后优先级为3的任务的序号为2。

四、解题思路

  1. 每次从队列头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印;
  2. 如果元素相同,保证原顺序,可以用优先队列实现,优先队列存储一个长度为2的数组,第一位是优先级,第二位是该任务出现的顺序;

  1. 如果弹出的优先级是最高的任务,即和优先队列弹出的优先级相同,添加打印顺序;
  2. 如果弹出的优先级不是最高的任务,即和优先队列弹出的优先级不相同;
    • 将弹出首个优先级再次加入队列queue;
    • 将弹出首个数组再次加入优先队列prior。

五、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 每个任务的优先级int[] arr = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();// 每个任务的优先级依次加入队列Queue<Integer> queue = new ArrayDeque<>();/*** 每个任务的优先级依次加入优先队列* int[2]:0是每个任务的优先级,1是每个任务的优先级对应的下角标* 如果优先级相同则比较下角标,按下角标升序排序* 如果优先级不同,则按优先级降序排序*/PriorityQueue<int[]> prior = new PriorityQueue<>((a, b) -> (b[0] == a[0] ? a[1] - b[1] : b[0] - a[0]));int[] resultArr = new int[arr.length];for (int i = 0; i < arr.length; i++) {queue.offer(arr[i]);prior.offer(new int[]{arr[i], i});}// 打印顺序int n = 0;while(!queue.isEmpty()) {// 弹出首个优先级int poll = queue.poll();// 弹出首个数组int[] pollArr = prior.poll();// 如果弹出的优先级是最高的任务,即和优先队列弹出的优先级相同if (poll == pollArr[0]) {// 添加打印顺序resultArr[pollArr[1]] = n;n++;} else {// 如果弹出的优先级不是最高的任务,即和优先队列弹出的优先级不相同queue.offer(poll);// 将弹出首个优先级再次加入队列queueprior.offer(pollArr);// 将弹出首个数组再次加入优先队列prior}}// 每个任务的打印顺序StringJoiner joiner = new StringJoiner(",");for (int i = 0; i < resultArr.length; i++) {joiner.add(resultArr[i]+"");}System.out.println(joiner);
}

六、效果展示

1、输入

9,3,5

2、输出

0,2,1

3、说明

  1. 队列头部任务的优先级为9,优先级最高,序号为0;
  2. 然后队列头部任务优先级为3,队列中还有优先级为5的任务,优先级3任务被移到队列尾部;
  3. 然后打印优先级为5的任务,故其序号为1;
  4. 最后优先级为3的任务的序号为2。

在这里插入图片描述


🏆下一篇:华为OD机试 - 最长的顺子 - 感谢@禁止你发言提供的更简便算法(Java 2023 B卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

0基础 三个月掌握C语言(14)-上

自定义类型 其实C语言有内置类型 也有自定义的类型 内置类型&#xff08;C语言本身支持的现成的类型&#xff09; 如&#xff1a;char short int long float double.... 但仅仅有这些类型是不够的 比如说 我们想表示一个人&#xff08;复杂对象&#xff09; 对于人的描述那…

我们是如何测试人工智能的(八)包含大模型的企业级智能客服系统拆解与测试方法 -- 大模型 RAG

大模型的缺陷 -- 幻觉 接触过 GPT 这样的大模型产品的同学应该都知道大模型的强大之处&#xff0c; 很多人都应该调戏过 GPT&#xff0c;跟 GPT 聊很多的天。 作为一个面向大众的对话机器人&#xff0c;GPT 明显是鹤立鸡群&#xff0c;在世界范围内还没有看到有能跟 GPT 扳手腕…

开启Safari手势支持

在使用Safari 的时候&#xff0c;大家有没有觉得不支持手势使用起来不是很方便&#xff0c; 触摸板只支持少量简单的手势&#xff0c;如缩放&#xff0c;滚动等。如果使用鼠标的用户&#xff0c;则完全无法使用手势。经过折腾研究&#xff0c;使用CirMenu应用可以完美解决这个要…

C++第十一弹---类与对象(八)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、友元 1.1、友元函数 1.2、友元类 2、内部类 3、匿名对象 4、拷贝对象时的一些编译器优化 总结 1、友元 友元提供了一种突破封装的方式&a…

深度解析:Elasticsearch写入请求处理流程

版本 Elasticsearch 8.x 原文链接&#xff1a;https://mp.weixin.qq.com/s/hZ_ZOLFUoRuWyqp47hqCgQ 今天来看下 Elasticsearch 中的写入流程。 不想看过程可以直接跳转文章末尾查看总结部分。最后附上个人理解的一个图。 从我们发出写入请求&#xff0c;到 Elasticsearch 接收请…

单目深度估计基础理论和论文学习总结

单目深度估计基础理论和论文学习总结 一、背景知识&#xff1a; 三维刚体运动的数学表示&#xff1a;旋转平移矩阵、旋转向量、欧拉角、四元数、轴角模型、齐次坐标、各种变换等 照相机模型&#xff1a;单目/双目模型&#xff0c;单目中的世界坐标系/相机坐标系/图像坐标系的…

从零开始的 dbt 入门教程 (dbt cloud 自动化篇)

一、引 在前面的几篇文章中&#xff0c;我们从 dbt core 聊到了 dbt 项目工程化&#xff0c;我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发&#xff0c;那么到现在我们更迫切需要解决的是如何让数据更新做到定时化&#xff0c;毕竟作为开发我们肯定没有经历每天定…

【项目管理后台】Vue3+Ts+Sass实战框架搭建二

Vue3TsSass搭建 git cz的配置mock 数据配置viteMockServe 建立mock/user.ts文件夹测试一下mock是否配置成功 axios二次封装解决env报错问题&#xff0c;ImportMeta”上不存在属性“env” 统一管理相关接口新建api/index.js 路由的配置建立router/index.ts将路由进行集中封装&am…

GA遗传算法和ALNS算法的区别(我的APS项目七)

博主用最简单的方式告诉你遗传算法是什么&#xff0c;估计这是网上最简单的遗传算法入门教程了。首先我们先带入一个问题&#xff0c;我们要去9大城市旅游&#xff0c;想知道每个城市走一遍&#xff0c;总路程最短的出行顺序是什么&#xff1f; OK&#xff0c;题目我们已经明确…

Chrome 插件打包发布

插件打包发布 一、打包成 zip 包 最简单方便的一种其实就是打包成 zip 包&#xff0c;通过下载链接进行下载&#xff0c;在包里面通过设置版本号和数据库的版本号对比来提醒用户进行新包的下载。 二、发布到 Chrome 应用商店 1. 注册成为开发者 在发布到 chrome 应用商店之…

第八节:深入讲解SMB中的Http组件

一、概述 Http组作是SMB中的核心组件之一&#xff0c;在第七节中讲解了如何简洁的进行web程序部署和运行&#xff0c;这只是它的功能之一。在本节中&#xff0c;我们将介绍Http组件的重要属性。 二、请求头Request 1、支持方法 支持POST、GET、PUT、DELETE、OPTIONS等方法&a…

吴恩达深度学习笔记:神经网络的编程基础2.15-2.17

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第二周&#xff1a;神经网络的编程基础 (Basics of Neural Network programming)2.15 Python 中的广播&#xff08;Broadcasting in Python&#xff09;2.16 关于 python _ numpy 向量的说明&…

作为技术人员在日常工作中如何使用边界AICHAT工具

目录 1.1、解决日常问题1.2、编写日常程序1.3、优化日常工作中的代码1.4、边界AICHAT工具会员中心1.5、边界AICHAT工具普通用户的权益1.6、边界AICHAT工具超级永久会员的权益 有关边界AICHAT工具工具的介绍请参考之前的系列博文&#xff0c; 一款好用的AI工具——边界AICHAT&a…

【SpringSecurity】十六、OAuth2.0授权服务器、资源服务器的配置(理论部分)

文章目录 0、OAuth2服务端结构1、授权服务配置2、授权服务器 ⇒ 配置客户端详情3、授权服务器 ⇒ 管理令牌配置4、授权服务器&#xff1a;配置端点访问的安全约束5、资源服务器配置 相关&#x1f4d5;&#xff1a; 【OAuth2授权服务器配置完整Demo】 0、OAuth2服务端结构 OAu…

微服务(基础篇-003-Nacos集群搭建)

目录 Nacos集群搭建 1.集群结构图 2.搭建集群 2.1.初始化数据库 2.2.下载nacos 2.3.配置Nacos 2.4.启动 2.5.nginx反向代理 2.6.优化 视频地址&#xff1a; 06-Nacos配置管理-nacos集群搭建_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p29&…

【Linux文本处理三剑客-grep、awk、sed】

grep, awk, 和 sed 是三个强大的文本处理工具&#xff0c;在Linux系统中广泛使用。每个工具都有其独特的特性和用法&#xff0c;下面我会对每一个工具进行简要的介绍和说明。 1.grep grep 是一个用于模式搜索的工具&#xff0c;它可以在文件或者标准输入中搜索包含特定模式的…

国内ip地址随意更换的潜在风险和策略

在数字化时代&#xff0c;IP地址是互联网通信的基础&#xff0c;而国内IP地址的随意更换可能带来一系列安全风险和问题。虎观代理小二将探讨国内IP地址随意更换的潜在影响以及如何有效应对这一挑战。 1.什么是国内IP地址&#xff1f; 国内IP地址是指在国内分配和使用的IP地址&…

边缘计算基础介绍及AKamai-linode产品分析

1、背景 随着互联网的发展&#xff0c;我们进入了大数据时代&#xff0c;这个时代也是移动互联网的时代&#xff0c;而且这个时代&#xff0c;大量的线下服务走到线上&#xff0c;随之而来的&#xff0c;比如外卖、叫车……于是&#xff0c;有各种各样的 App 和设备在收集你的…

对尾递归的理解,有哪些应用场景

文章目录 一、递归二、尾递归二、应用场景参考文献 一、递归 递归&#xff08;英语&#xff1a;Recursion&#xff09; 在数学与计算机科学中&#xff0c;是指在函数的定义中使用函数自身的方法 在函数内部&#xff0c;可以调用其他函数。如果一个函数在内部调用自身本身&am…

电子电器架构 —— 诊断数据DTC具体故障

电子电器架构 —— 诊断数据DTC具体故障 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣…