首页 > 编程语言 >【华为OD机试真题】A卷-预定酒店(JAVA)

【华为OD机试真题】A卷-预定酒店(JAVA)

时间:2024-04-01 23:33:59浏览次数:11  
标签:java JAVA 真题 int OD util import 价格

一、题目描述

【华为OD机试真题】A卷-预定酒店(JAVA)

题目描述:

放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的 数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店 (n>=k>0) ,并由低到高打印酒店的价格

二、输入输出

输入描述:
第一行: n,k,x 
第二行: A[o] A[1] A[2]...A[n-1]
输出描述:
从低到高打印筛选出的酒店价格

三、参考示例

示例一 
输入:
10 5 6
1 2 3 4 5 6 7 8 9 10
输出:
4 5 6 7 8
示例二
输入:
10 4 6
10 9 8 7 6 5 4 3 2 1
输出:
4 5 6 7
说明:
数组长度n = 10,筛选个数 k = 4,目标价位x = 6 当4 和8 距离x 相同时,优先选择价格低的4
示例三
输入:
6 3 1000
30 30 200 500 70 300
输出:
200 300 500
备注:
1.酒店价格数组A和小明的心理价位x均为整型数据;(0<n,k,x<10000) 2.优先选择价格最接近心理价位的酒店,若两家酒店和心理价位差价相同,则选择价格较低的酒店。(比如100元和300元距离心理价位200元同样接近,此时选择100元)
3.酒店价格可能相同重复

四、解题思路

  1. 通过Scanner获取输入n、k和x。
  2. 输入并排序价格数组。
  3. 计算每个价格与目标价格的差值,构建价格评分列表。
  4. 使用自定义排序方法对价格评分列表进行排序。
  5. 选择前k个价格作为选定的价格列表。
  6. 对选定的价格列表进行排序。
  7. 输出选定的价格列表。

五、参考代码

/*
 * @Author: mgc
 * @Date: 2024-02-02 17:47:00
 * @LastEditors: Do not edit
 * @LastEditTime: 2024-02-02 17:48:55
 */

// import java.util.*;
// import java.util.HashMap;
// import java.util.Scanner;
// import java.util.regex.Matcher;
// import java.util.stream.Stream;
// import java.util.regex.Pattern;
// import java.util.stream.Collectors;

import java.util.Scanner;
import java.util.*;

class Main {

    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        int x = in.nextInt();

        // 输入并排序价格
        int[] prices = new int[n];
        for (int i = 0; i < prices.length; i++) {
            prices[i] = in.nextInt();
        }
        Arrays.sort(prices);

        // 计算价格评分
        ArrayList<int[]> priceRating = new ArrayList<>();
        for (int i = 0; i < prices.length; i++) {
            int price = prices[i];
            int[] pair = new int[2];
            pair[0] = price;
            pair[1] = Math.abs(price - x);
            priceRating.add(pair);
        }

        // 自定义排序
        Collections.sort(priceRating, (o1, o2) -> {
            if (o1[1] == o2[1]) {
                return o1[0] - o2[0];
            } else {
                return o1[1] - o2[1];
            }
        });

        // 选择前k个价格
        List<Integer> pickedPrices = new ArrayList<>();
        for (int i = 0; i < k; i++) {
            pickedPrices.add(priceRating.get(i)[0]);
        }

        pickedPrices.sort(Integer::compareTo);

        // 输出选定的价格
        for (int i = 0; i < pickedPrices.size(); i++) {
            System.out.print(pickedPrices.get(i));
            if (i != pickedPrices.size() - 1) {
                System.out.print(" ");
            }
        }
    }

}

六、华为OD机试真题汇总目录

    【华为OD机试】真题汇总A+B+C+D券(Python实现)

    【华为OD机试】真题汇总A+B+C+D卷(JAVA实现)

    【华为OD机试】真题汇总A+B+C+D卷(C++实现)

标签:java,JAVA,真题,int,OD,util,import,价格
From: https://blog.csdn.net/u014481728/article/details/137236970

相关文章

  • java基础
                    ......
  • PLC通过modbus转profinet网关连接湿度传感器操作步骤
    Modbus转Profinet网关可以连接不同系统和设备,有些现场需要实时监测环境参数,但大由于当时环境仪表设备不能达到直连效果,通过Modbus转Profinet网关,湿度传感器的数据可以被准确、可靠地传输到监控系统中,为生产运作提供全面的数据支持。  Modbus转Profinet网关接湿度传感器的操作......
  • GitHub上标星120k的Java进阶面试教程等!(建议收藏
    转发+关注,然后私信回复关键字“888”即可获得我精心整理的《Java开源项目合集》资料八、《JavaFamily》==============【互联网一线大厂面试+学习指南】进阶知识完全扫官。 部分目录:九、《interview_internal_reference》==================================2......
  • 2024最新分享我的面经总结:Java面试技术点攻略(九大核心专题
    关于操作系统这一部分,其实问的内容并不多,主要是因为这一部分问来问去也都是那么几个同样的问题,例如线程通信,线程与进程区别,进程调度算法以及虚拟内存、物理内存等。所以,在这一方面,我也整理了一些相对核心的内容。核心三:MySQL=========MySQL就更不用多说了,数据库不问......
  • Java中的信号量Semaphore
    引言:        在Java编程中,信号量Semaphore是一种重要的同步工具,用于控制对共享资源的访问。本文将详细介绍信号量Semaphore的概念、用法以及一些示例。一、什么是信号量Semaphore?        信号量Semaphore是一种用于控制多个线程访问共享资源的同步工具。......
  • MySQL提升笔记(4)InnoDB存储结构(1)
    innoDB存储引擎中,常见的页类型有:✅数据页(B-treeNode)✅undo页(undoLogPage)✅系统页(SystemPage)✅事务数据页(TransactionSystemPage)✅插入缓冲位图页(InsertBufferBitmap)✅插入缓冲空闲列表页(InsertBufferFreeList)✅未压缩的二进制大对象页(Uncompres......
  • Hadoop——HDFS文件系统的Java API操作
    2.7.4org.apache.hadoophadoop-hdfs2.7.4org.apache.hadoophadoop-client2.7.4junitjunit4.12IDEA会自动保存文件并且导入依赖包,点击右侧的Maven,展开Dependencies,可以看到四个依赖包以及导入进来了三、初始化我们通过junit来进行测试,首先创建一个类,添加如下内......
  • 2024JAVA互联网各大BATJ大厂(网易、华为
    ​为什么报了这个部门?​你觉得自己有什么优势,能给这个部门带来什么?​讲自己的三个优点?​说一下自己的不足?​。。。今日头条(抖音,收到意向书)​牛客网视频平台面试,算法题在线编程一下午走完三面流程。不涉及部门面试,面试官说三轮面试都是统招的。​一面(约......
  • vscode开发flutter
    Flutter开发app配置国内镜像,或使用vpn,文档在中国网络环境下使用Flutter|Flutter中文文档-Flutter中文开发者网站-Flutter先从官网下载AndroidStudio,下载完成后,命令行运行flutterdoctor指令将检查Windows完整的Flutter开发环境的所有组件。显示缺少......
  • 【Java跳槽面试必备】2024年最新八股文
    【前言】网上各种面试八股文太多太多,但我今年找了好几个都是很久很久以前的老面试题,老文档了,和我出去面试市场上面试官问的问题基本上不一样了,可以说被打了一个措手不及,浪费了好几个机会,回来又找了好一些资料,以及结合自己最近的面试情况总结了一些心得免费分享给大家!虽然只有几本......