【华为OD机试真题】预定酒店(javaC++python)100%通过率
在小明的暑假旅行计划中,预定酒店成了一个重要任务。他像一位精明的淘宝客,拿着预算表在价格海洋中寻找最合适的“宝贝”。
这不,他遇到了一个有趣的算法题,需要从一堆酒店价格中筛选出最接近他心理价位的k个。听起来简单,但要照顾到差价相同的情况下选择更便宜的那个,可要好好动动脑筋。比如,100和300距离200同样远,但小明更喜欢100,毕竟谁不喜欢省点小钱花呢?
这让我想到,生活中的选择题何尝不是如此?当我们面对多个选项时,常常需要先筛选出最优解,再在这个基础上做次优选择。比如找对象,既要颜值高,又要脾气好,最后还得看谁更适合长期发展。这不就是排序和筛选的现实版吗?
所以,下次当你在淘宝上犹豫该买哪件衣服时,不妨想想这背后的排序逻辑,也许能找到自己的购物偏好哦!
预定酒店
知识点排序
时间限制:1s空间限制:256MB限定语言:不限
题目描述:
放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为 n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格。
备注:
1)酒店价格数组A和小明的心理价位x均为整型数据;(0<n,k,x<10000)
2)优先选择价格最接近心理价位的酒店;若两家酒店和心理价位差价相同,则选择 价格较低的酒店。(比如100元和300元距离心理价位200元同样接近,此时选择 100元);
3)酒店价格可能相同重复。
输入描述:
第一行:n,k,x
第二行:A[0]A[1]A[2]…A[n-1]
输出描述:
由低到高打印筛选出的酒店价格
补充说明:
1)酒店价格数组A和小明的心理价位x均为整型数据
2)优先选择价格最接近心理价位的酒店;若两家酒店距离心理价位差价相同,则选择价格较低 的酒店。(比如100元和300元距离心理价位200元同样接近,此时选择100元)
3)酒店价格可能相同重复。