华为OD机试真题 JavaScript 实现【预定酒店】【2022Q4 100分】

news/2024/12/15 13:36:19/

在这里插入图片描述

一、题目描述

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

二、输入描述

第一行: n,k,x
第二行: A[o] A[1] A[2]…A[n-1]

三、输出描述

从低到高打印筛选出的酒店价格。

四、解题思路

  1. 读取输入的酒店数量 hotelCount,选择数量 selectCount,和心理价位 targetPrice;
  2. 创建一个大小为 hotelCount 的整数数组 priceArr,用于存储酒店价格;
  3. 循环读取 hotelCount 个价格,并将其存储到 priceArr 数组中;
  4. 对 priceArr 数组进行排序,以便按价格从低到高进行处理;
  5. 创建一个 ArrayList,用于存储每个酒店价格与心理价位的差值;
  6. 遍历排序后的 priceArr 数组,计算每个酒店价格与 targetPrice 的差值,并将酒店价格和差值存储到 ArrayList 中;
  7. 根据差值对 ArrayList 进行排序,如果差值相同,则按价格从低到高进行排序;
  8. 创建一个 ArrayList,用于存储筛选出的酒店价格;
  9. 遍历排序后的 ArrayList,将前 selectCount 个酒店价格加入到筛选列表中;
  10. 对筛选列表进行排序,以便按价格从低到高打印;
  11. 遍历筛选列表,按顺序打印酒店价格;

五、JavaScript算法源码

function selectHotels(hotelCount, selectCount, targetPrice, input) {const prices = input.split(" ");// 对酒店价格进行排序const sortedPrices = prices.sort((a, b) => a - b);// 酒店价格与心理价位差值const priceDiff = sortedPrices.map((price) => [price, Math.abs(price - targetPrice)]);// 根据差值进行排序priceDiff.sort((a, b) => {if (a[1] === b[1]) {return a[0] - b[0];} else {return a[1] - b[1];}});// 筛选出的酒店价格const selectedHotels = priceDiff.slice(0, selectCount).map((item) => item[0]);// 按照从低到高的顺序打印酒店价格selectedHotels.sort((a, b) => a - b);return selectedHotels;
}

六、效果展示

1、输入

10 4 6
10 9 8 7 6 5 4 3 2 1

2、输出

4 5 6 7

3、思路

数组长度n = 10,筛选个数 k = 4,目标价位x = 6,当4 和8 距离x 相同时,优先选择价格低的。

  1. 对酒店价格进行排序
  2. 酒店价格与心理价位差值
  3. 根据差值进行排序
  4. 筛选出的酒店价格

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

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

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/356532.html

相关文章

vivo手机助手强势来袭!

vivo手机助手强势来袭! vivo手机助手是一个android智能手机资料管理软件和资源获取平台。这里提供海量的游戏、软件、主题等资源;可以通过它管理、备份、恢复手机资料和日程;更有vivo云提供云备份和云盘服务。vivo手机助手帮助你用最省流量、…

vivo官网App模块化开发方案-ModularDevTool

作者:vivo 互联网客户端团队- Wang Zhenyu 本文主要讲述了Android客户端模块化开发的痛点及解决方案,详细讲解了方案的实现思路和具体实现方法。 说明:本工具基于vivo互联网客户端团队内部开源的编译管理工具开发。 一、背景 现在客户端的业…

03- 流程控制(C语言)

一 概述 C语言支持三种程序运行结构:顺序结构、选择结构、循环结构。 顺序结构:按照语句编写的顺序 上到下逐句执行。选择结构:也叫 分支结构,依据是否满足条件,有选择的执行相应功能。循环结构:依据条件…

Android Activity启动过程详解

目录 一,背景介绍 二,Activity启动过程 2.1 调用 ATMS 系统进程 2.1.1 时序图 2.1.2 Launcher 桌面的 App 图标入口 2.1.3 startActivitySafely() 方法 2.1.4 execStartActivity() 方法 2.2 ATMS 向 AMS 发送创建应用进程的过程 2.2.1 时序图 …

gitlab+jenkins+harbor实现CI/CD(1)——环境准备

gitlabjenkinsharbor实现CI/CD(1)——环境准备 前言一、git工具git安装初始化版本库登录上传 二、gitlab使用gitlab部署登录设置克隆项目 jenkins使用安装jenkins登录设置 前言 提示:这里可以添加本文要记录的大概内容: 例如&am…

[Android]打开系统自带的文件管理器

打开Android系统自带的文件管理器 adb shell am start com.android.documentsui/.FilesActivityadb获取当前正在运行的前端界面的包名及Activity adb shell dumpsys window windows | grep -E mCurrentFocus|mFocusedApp

3.文件管理

一、创建文件 touch 例如→ echo 例如→ 创写文件也行 修改文件大小 二、查看文件 命令有cat(查看内容)、more(分页显示内容)、less(分页显示内容)、head(显示头文件)、tail…

六、文件管理

六、文件管理 1. 文件的概念 文件的定义: 文件是计算机硬盘为载体的存储在计算机上的信息集合,文件可以是文本文档、图片、程序等。 在系统运行时,计算机以进程为基本单位进行资源的调度和分配;而在用户进程的输入、输出中&#…