如何在华为OD机试中获得满分?Java实现【最差产品奖】一文详解!

news2024/12/24 8:49:10

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
    • 2. 输入描述
    • 3. 输出描述
    • 4. Java算法源码
    • 5. 测试
    • 6.解题思路

1. 题目描述

A公司准备对他下面的N个产品评选最差奖,评选的方式是首先对每个产品进行评分,然后根据评分区间计算相邻几个产品中最差的产品。评选的标准是依次找到从当前产品开始前M个产品中最差的产品,请给出最差产品的评分序列。

2. 输入描述

第一行,数字M,表示评分区间的长度,取值范围是0<M<10000。
第二行,产品的评分序列,比如[12,3,8,6,5],产品数量N范围是-10000<N<10000。

3. 输出描述

评分区间内最差产品的评分序列。

4. Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // 评分区间的长度
    int M = Integer.valueOf(sc.nextLine());
    // 产品的评分序列
    int[] scoreArr = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();

    Deque<Integer> deque = new ArrayDeque<>();
    for (int i = 0; i < M; ++i) {
        while (!deque.isEmpty() && scoreArr[i] <= scoreArr[deque.getLast()]) {
            deque.pollLast();
        }
        deque.offer(i);
    }

    List<Integer> list = new ArrayList<>();
    for (int i = M; i < scoreArr.length; ++i) {
        list.add(scoreArr[deque.getFirst()]);
        while (!deque.isEmpty() && scoreArr[i] <= scoreArr[deque.getLast()]) {
            deque.pollLast();
        }
        deque.offer(i);
        while (deque.getLast() - deque.getFirst() + 1 > M) {
            deque.pollFirst();
        }
    }
    list.add(scoreArr[deque.getFirst()]);

    for (int i = 0; i < list.size() - 1; ++i) {
        System.out.print(list.get(i) + ",");
    }
    System.out.print(list.get(list.size() - 1));
}

5. 测试

在这里插入图片描述

6.解题思路

在这里插入图片描述

  1. 读取输入的评分区间长度 M 和产品评分序列 scoreArr
  2. 创建一个双端队列 deque,用于存储最差产品的索引。
  3. 遍历评分序列的前 M 个产品,将索引添加到队列中。在添加索引之前,先将队列尾部不符合最差产品要求的索引移除。
  4. 创建一个列表 list,用于存储评分区间内最差产品的评分序列。
  5. 从第 M 个产品开始遍历评分序列,每次遍历都将队列头部的索引对应的评分添加到 list 中。
  6. 在添加新的索引之前,先将队列尾部不符合最差产品要求的索引移除。
  7. 检查队列的头部索引是否超出评分区间范围,如果超出,则移除头部索引。
  8. 将当前索引添加到队列中。
  9. 继续遍历下一个产品,直到遍历完整个评分序列。
  10. 最后,输出评分序列 list

在这里插入图片描述

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

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

相关文章

NetApp AFF C 系列——可持续、可扩展且安全可靠的全闪存解决方案

NetApp AFF C 系列 采用全新的闪存技术&#xff0c;同时辅以智能科技加持&#xff0c;将为您带来一个更为经济实惠的全闪存解决方案&#xff0c;它重新定义了安全性、可扩展性和可持续性。 为什么选择 AFF C 系列的新一代全闪存解决方案&#xff1f; 实现现代化&#xff0c;打…

chatgpt+mj+did生成会说话的头像

chatgptmjdid生成会说话的头像 当我们有了 ChatGPT 生成的内容&#xff0c;有了 stable-diffusion、midjourney 或者 dalle2 生成的人像&#xff0c;如果还能让人像动起来&#xff0c;替我们朗诵或者播报一下 ChatGPT 的内容&#xff0c;不就是一个数字人了么&#xff1f; D-…

2023年 微信生态催生就业收入机会超5000万个

文章目录 微信生态催生就业收入机会超5000万个原因相关情况总结 结语 微信生态催生就业收入机会超5000万个 ​ 近年来&#xff0c;随着移动互联网的普及和发展&#xff0c;微信作为国内最大的社交平台之一&#xff0c;已经成为人们日常生活中必不可少的工具。同时&#xff0c;…

嘉立创EDA专业版网络规则设置

在“设计规则”中的“规则管理”界面将PCB的各个设计规则如线宽规则、差分规则、过孔规则等设置完成之后&#xff0c;就需要将PCB中每个网络所对应的规则进行驱动&#xff0c;那么就可以设置“网络规则”。在“网络规则”中可以对当前PCB内的所有网络进行规则分配&#xff0c;继…

数字图像处理 基于傅里叶变换的图像拼接

一、简述 这里讨论的算法主要是指应用于基于相机拍摄的显微镜的2D图像的拼接。基于2D显微图像的拼接通常只考虑x、y方向的位移。 图像拼接在图像处理中应用广泛。特别是对高分辨率标本成像的需求日益增加。通常,这些标本不适合显微镜的视野。为了克服这一缺点,使用移动样品的…

泡泡玛特发布首支生态公益微纪录片 潮玩IP助力生物多样性保护

5月22日国际生物多样性日&#xff0c;泡泡玛特联合中国环境发布了首支生态公益微纪录片&#xff0c;通过潮玩艺术家AYAN和野生动物保护者初雯雯两个年轻人的故事&#xff0c;用一种全新的方式&#xff0c;唤起年轻人对动物保护和环境保护的关注。 AYAN的DIMOO与蒙新河狸 对于潮…

m1下git的客户端工具及idea配置

背景&#xff1a;换了m2以后&#xff0c;好多软件都不兼容&#xff0c;然后同步代码的事情就一直搁置了&#xff0c;今天记录一下如何用客户端工具同步代码和idea中配置远程仓库 第一步&#xff1a;下载github desktop&#xff0c;有针对m1芯片的&#xff0c;填写上你github的…

Java并发体系-锁与同步-[2]

可见性设计的硬件 从硬件的级别来考虑一下可见性的问题 **1、第一个可见性的场景&#xff1a;**每个处理器都有自己的寄存器&#xff08;register&#xff09;&#xff0c;所以多个处理器各自运行一个线程的时候&#xff0c;可能导致某个变量给放到寄存器里去&#xff0c;接着…

【Java多线程案例】使用阻塞队列实现生产者消费者模型

前言 本篇文章讲解多线程案例之阻塞队列。主要讲解阻塞队列的特性、实际开发中常用的到的生产者消费者模型&#xff0c;以及生产者消费者模型解耦合、削峰填谷的好处。并且使用 Java 多线程模拟实现一个生产者消费者模型、阻塞队列版的生产者消费者模型。 文章从什么是阻塞队列…

12道c语言的课后习题!

1、计算n的阶乘&#xff08;1*2*3*4*5 n是个数&#xff0c;比如说乘到100&#xff1f;&#xff09; // 计算n的阶乘#include"stdio.h"int main() {int n 0;scanf("%d", &n);int i 0;int ret 1;for (i 1; i < n; i) {ret * i;}printf("…

技术分享| 融合会议协议大解密

anyRTC的融合会议解决方案中&#xff0c;支持H.323协议、SIP协议、GB28181国标协议、私有协议等等&#xff0c;实际在跟客户沟通时&#xff0c;我们常会被问到到底是SIP还是H.323好&#xff1f;客户前期已经建设了视频会议系统&#xff0c;有H.323的、有腾讯会议/Zoom这种互联网…

ESLint驼峰命名法规则校验关闭

目录 1、简单介绍ESLint1.1 ESLint是什么1.2 ESLint的好处1.3 ESLint的规范 2、 驼峰校验提示3、解决方案 1、简单介绍ESLint 1.1 ESLint是什么 ESLint 是一个代码检查工具&#xff0c;用来检查你的代码是否符合指定的规范 例如: 的前后必须有一个空格例如: 函数名后面必须…

郑州市元宇宙产业发展实施方案发布,中创助力元宇宙创新建设!

如果说2022年的“元宇宙”赛道&#xff0c;尚是以Meta为首&#xff0c;而今&#xff0c;政府也纷纷参与其中。 数据显示截至目前&#xff0c;国内已有至少30个地区&#xff08;涉及10个省级行政区&#xff09;颁布了元宇宙相关的支持性政策或征求意见稿&#xff0c;政策文件名中…

神策「数据闭环解决方案」重磅上线,3 大方向助推业务起飞

在通过数据驱动业务增长的落地实践中&#xff0c;企业大多面临以下困扰&#xff1a; 数据源多且杂乱&#xff0c;该如何从 0 开始积累数据助力业务决策&#xff1f; 如何借助数据的力量&#xff0c;洞察业务关键增长点&#xff1f; 如何提升运营效率&#xff1f;怎样提高用户的…

STM32——关于GPIO讲解及标准库应用(基础篇)

简介&#xff1a; STM32是一系列基于ARM Cortex-M内核的32位微控制器。该系列微控制器广泛应用于计算机、通讯、工业自动化、消费电子、汽车电子、医疗仪器及家庭电器等领域。该系列控制器具有高性能、低功耗、智能化等特点。其中&#xff0c;GPIO就是STM32控制器中的一…

Stack 栈的实现与应用

目录 1. 概念 2. 常用的栈的方法 2.1 方法 2.2 代码 3. 自己实现栈 3.1 构造MyStack 3.2 push() 3.3 ensureCapacity&#xff08;&#xff09; 3.4 pop() 3.5 peek() 3.6 empty() 3.7 szie() 4. 栈的应用 1. 概念 栈&#xff08;Stack&#xff09;是一种数据结构&…

02_stack栈

1. Stack 栈是什么&#xff1f; 栈也叫栈内存&#xff0c;主管Java程序的运行&#xff0c;是在线程创建时创建&#xff0c;它的生命期是跟随线程的生命期&#xff0c;线程结束栈内存也就释放&#xff0c;对于栈来说不存在垃圾回收问题&#xff0c;只要线程一结束该栈就Over&…

LabVIEWCompactRIO 开发指南37 在第三方模拟器中执行

LabVIEWCompactRIO 开发指南37 在第三方模拟器中执行 如果需要验证时序和功能&#xff0c;在将LabVIEW FPGA VI编译到硬件之前&#xff0c;可以与三款第三方仿真器进行交互&#xff1a;MentorGraphicsModelSim&#xff08;LabVIEW2013及更早版本&#xff09;、MentorGraphics…

【MySQL】MySQL主从同步延迟原因与解决方案

文章目录 一、MySQL数据库主从同步延迟产生的原因二、关于DDL和DML三、主从延时排查方法四、解决方案3.1 解决从库复制延迟的问题&#xff1a;3.2 MySql数据库从库同步其他问题及解决方案 一、MySQL数据库主从同步延迟产生的原因 MySQL的主从复制都是单线程的操作&#xff0c;…

JS CSS 关于 Shadow dom 的用法

一、什么是 Shadow DOM 你是否好奇过&#xff0c;浏览器自带的元素的样式是如何实现的&#xff0c;例如 video、input &#xff0c;又或者在某些网站中看到一些非浏览器自带且没见过的元素&#xff1f; 如果你打开 F12 查看定位该元素的信息&#xff0c;你会发现啥都没看到&am…