华为OD机试真题 Java 实现【支持优先级的队列】【2023 B卷 100分】

article/2023/9/24 21:39:14

一、题目描述

实现一个支持优先级的队列,高优先级先出队列,同优先级时先进先出。

如果两个输入数据和优先级都相同,则后一个数据不入队列被丢弃。

队列存储的数据内容是一个整数。

二、输入描述

一组待存入队列的数据(包含内容和优先级)。

三、输出描述

队列的数据内容(优先级信息输出时不再体现)。

四、补充说明

不用考虑数据不合法的情况,测试数据不超过100个。

五、解题思路

  1. 定义一个优先级队列;
  2. 先根据优先级比较;
  3. 再判断两个输入数据和优先级都相同,则后一个数据不入队列被丢弃;
  4. 输出优先级队列;

六、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 优先级队列PriorityQueue<ComparePriority> queue = new PriorityQueue<>();String[] arr1 = sc.nextLine().split(",");for (int i = 0; i < arr1.length; i++) {String arr2 = arr1[i].replace("(", "").replace(")", "");String[] arr3 = arr2.split(":");// 数据int data = Integer.valueOf(arr3[0]);// 优先级int priority = Integer.valueOf(arr3[1]);/*** 实现一个支持优先级的队列,高优先级先出队列,同优先级时先进先出。* 如果两个输入数据和优先级都相同,则后一个数据不入队列被丢弃。*/ComparePriority comparePriority = new ComparePriority(data, priority);queue.add(comparePriority);}List<Integer> list = new ArrayList<>();ComparePriority comparePriority = queue.poll();while (comparePriority != null) {if (!comparePriority.equals(queue.peek())) {list.add(comparePriority.data);}comparePriority = queue.poll();}System.out.println(list);
}/*** 实现一个支持优先级的队列,高优先级先出队列,同优先级时先进先出。** 如果两个输入数据和优先级都相同,则后一个数据不入队列被丢弃。*/
static class ComparePriority implements Comparable<ComparePriority> {int data;int priority;public ComparePriority(int data, int priority) {this.data = data;this.priority = priority;}/*** 比较优先级*/@Overridepublic int compareTo(ComparePriority o) {return o.priority - this.priority;}/*** 如果两个输入数据和优先级都相同,则后一个数据不入队列被丢弃。*/@Overridepublic boolean equals(Object o) {if (this == o) {return true;}if (o == null || getClass() != o.getClass()) {return false;}ComparePriority comparePriority = (ComparePriority) o;return data == comparePriority.data && priority == comparePriority.priority;}
}

七、效果展示

1、输入

(100:1),(200:2),(300:3),(400:3)

2、输出

[300, 400, 200, 100]

3、说明

输入四组数据,每一组第一个数字为内容,第二个数字为优先级。

实现一个支持优先级的队列,高优先级先出队列,同优先级时先进先出。

如果两个输入数据和优先级都相同,则后一个数据不入队列被丢弃。

数据300和400的优先级最高,都为3,按输入顺序输出,故300,400,然后是优先级为2的200、优先级为1的100。

在这里插入图片描述

4、下面测试一下“如果两个输入数据和优先级都相同,则后一个数据不入队列被丢弃。”

(100:1),(100:1),(300:3),(400:3)

按道理,应该输出300, 400, 100。

下面,您来试一下?


🏆下一篇:华为OD机试真题 Java 实现【云短信平台优惠活动】【2023Q1 200分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。


http://www.ngui.cc/article/show-1200802.html

相关文章

Node.js+vue多用户个人博客网站i03nz

基于nodejs语言设计并实现了个人博客。该系统基于B/S即所谓浏览器/服务器模式&#xff0c;应用Vue框架&#xff0c;选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、文章分类管理、博客文章管理、留言板管理、系统管理等功能模块。要循序渐进&#xff0c;心急…

机器学习:基于XGBoost对信用卡欺诈行为的识别

机器学习&#xff1a;基于XGBoost对信用卡欺诈行为的识别 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f4…

chatgpt赋能python:Python列表全排列

Python列表全排列 列表是Python中最常用的数据结构之一&#xff0c;它允许我们将多个值&#xff08;数据&#xff09;存储在一个变量中。在Python中&#xff0c;有时我们需要对列表中的元素进行全排列&#xff0c;也就是根据不同的顺序重新排列列表中的元素。本文将介绍如何在…

Steinberg Dorico 5 软件发布

Steinberg的最新版本的作曲和音乐软件现在可用于Windows、macOS和iPad OS平台。Dorico 5引入了一系列强大的新功能旨在使播放更具表现力和真实感&#xff0c;同时还提供了一些有用的新工作流程和自定义选项。 新的舞台和空间模板功能为试听不同的虚拟演奏者位置和房间提供了一…

安装Linux-SUSE操作系统

文章目录 一、安装Linux-SUSE系统1、环境准备2、SUSE 镜像的下载2.1、下载企业服务器2.2、ARM和桌面的ISO 3、安装SUSE4、配置本地 yum 源5、SUSE常用安装命令6、在 SUSE系统上安装mysql数据库步骤&#xff1a;7、破解SUSE系统root密码 一、安装Linux-SUSE系统 1、环境准备 操…

编程的未来 - 还有未来么?

缘起 唐门教主上个月某天深夜写了一篇博客 --《编程的未来》&#xff0c;要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题&#xff0c;上周&#xff0c;在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候&#xff0c;大家也稍微谈了一下这个话题&#xff0c;但是谈…

外包干了4年,今天分手了...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

00后简直太卷了,让我们这些老油条情何以堪......

前几天我们公司一下子也来了几个新人&#xff0c;这些年前人是真能熬啊&#xff0c;本来我们几个老油子都是每天稍微加会班就打算走了&#xff0c;这几个新人一直不走&#xff0c;搞得我们也不好走。 2023年春招结束了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&#x…

【数学规划】

数学规划模型&#xff1a;优化问题的解决方案 引言 数学规划模型是数学优化领域的重要工具&#xff0c;它被广泛应用于各个领域&#xff0c;从工程设计到供应链管理&#xff0c;从金融投资到交通规划。 数学规划模型概述 数学规划模型是一种数学描述和解决优化问题的方法。…

如何用 Python 实现所有算法?

学会了 Python 基础知识&#xff0c;想进阶一下&#xff0c;那就来点算法吧&#xff01;毕竟编程语言只是工具&#xff0c;结构算法才是灵魂。 新手如何入门 Python 算法&#xff1f; 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&#xff0…