预订酒店问题
一、题目题目描述放暑假了小明决定到某旅游景点游玩他在网上搜索到了各种价位的酒店长度为n的数组A他的心理价位是x元请帮他筛选出k个最接近x元的酒店nk0,并由低到高打印酒店的价格。输入描述第一行n, k, x第二行A[0] A[1] A[2]…A[n-1]输出描述从低到高打印筛选出的酒店价格示例1输入10 5 61 2 3 4 5 6 7 8 9 1012输出4 5 6 7 81说明示例2输入10 4 610 9 8 7 6 5 4 3 2 112输出4 5 6 71说明示例3输入6 3 100030 30 200 500 70 30012输出200 300 5001说明解题思路输入解释第一行包含三个整数 n、k 和 xn酒店价格数组的长度即有 n 个酒店。k需要选择的最接近心理价位 x 的酒店数量。x用户的心理价位。第二行是酒店价格数组 A其中 A[0] 到 A[n-1] 代表不同酒店的价格。示例说明示例 1输入10 5 61 2 3 4 5 6 7 8 9 1012解释用户心理价位是 6。每个价格与 6 的差距分别是5432101234。按差距排序后最接近的 5 个价格为45678。最终输出为4 5 6 7 8。示例 2输入10 4 610 9 8 7 6 5 4 3 2 112解释用户心理价位是 6。每个价格与 6 的差距分别是4321012345。按差距排序后最接近的 4 个价格为4567。最终输出为4 5 6 7。示例 3输入6 3 100030 30 200 500 70 30012解释用户心理价位是 1000。每个价格与 1000 的差距分别是970970800500930700。按差距排序后最接近的 3 个价格为200300500。最终输出为200 300 500。解题思路优先选择价格最接近心理价位的酒店若两家酒店和心理价位差价相同则选择价格较低的酒店。(比如100元和300元距离心理价位200元同样接近此时选择100元)酒店价格可能相同重复二、代码n,k,xmap(int,input().split())priceslist(map(int,input().split()))sorted_pricessorted(prices)price_ratingsorted([(price,abs(price-x))forpriceinsorted_prices],keylambdaitem:item[1])print(price_rating)picked_pricesorted(item[0]foriteminprice_rating[:k])print(picked_price)print( .join(map(str,picked_price)))说明这段代码中使用了三次sorted()函数第一次sorted()sorted_prices sorted(prices)作用对原始价格列表进行升序排序目的确保后续处理时价格是有序的便于处理相同差值时选择较低价格第二次sorted()price_rating sorted([(price, abs(price - x)) for price in sorted_prices], keylambda item: item[1])作用按价格与心理价位x的绝对差值进行排序关键使用keylambda item: item[1]指定按元组的第二个元素差值排序效果实现最接近优先的排序规则第三次sorted()picked_price sorted(item[0] for item in price_rating[:k])作用对选出的前k个最接近的价格进行升序排序目的满足题目要求由低到高打印酒店的价格这三次sorted()调用分别完成了原始数据排序、按接近程度排序、最终输出排序共同实现了题目的完整逻辑。三、sorted() 方法总结在上面的代码中我们使用了 Python 内置的sorted()函数来对列表进行排序。这里对sorted()方法进行一个详细的总结。1. 基本语法sorted(iterable,keyNone,reverseFalse)iterable: 需要排序的可迭代对象如列表、元组、字符串等。key: 可选参数指定一个函数该函数用于从每个元素中提取一个用于比较的键。reverse: 可选参数布尔值。默认为False表示升序排序设为True则为降序排序。返回值: 返回一个新的已排序列表不会修改原可迭代对象。2. 与 list.sort() 的区别sorted()返回一个新的排序后的列表原列表不变。list.sort()是列表的方法直接修改原列表并返回None。my_list[3,1,2]new_listsorted(my_list)# my_list 不变new_list 为 [1, 2, 3]my_list.sort()# my_list 变为 [1, 2, 3]3. key 参数详解key参数是sorted()最强大的功能之一它允许我们自定义排序规则。a) 按元素的某个属性排序students[(Alice,88),(Bob,95),(Charlie,78)]# 按分数排序sorted_by_scoresorted(students,keylambdas:s[1])# [(Charlie, 78), (Alice, 88), (Bob, 95)]b) 按多个条件排序可以通过返回一个元组来实现多级排序。# 先按分数降序分数相同按名字升序sorted_studentssorted(students,keylambdas:(-s[1],s[0]))c) 使用内置函数words[apple,Banana,cherry,Date]# 不区分大小写排序sorted_wordssorted(words,keystr.lower)# [apple, Banana, cherry, Date]4. 在本题目中的应用回顾我们题目中的代码price_ratingsorted([(price,abs(price-x))forpriceinsorted_prices],keylambdaitem:item[1])这里我们创建了一个元组列表(price, abs(price - x))然后使用sorted()并指定keylambda item: item[1]即按照每个元组的第二个元素价格与心理价位的绝对差值进行排序。这样就实现了“最接近优先”的排序规则。5. 性能与稳定性sorted()使用的是 Timsort 算法时间复杂度为 O(n log n)。Timsort 是稳定的排序算法这意味着当两个元素比较相等时它们原有的相对顺序会被保留。这在多级排序中非常有用。6. 对复杂数据结构排序可以对字典、对象列表等进行排序。# 对字典按键或值排序my_dict{b:2,a:1,c:3}sorted_by_keysorted(my_dict.items())# [(a, 1), (b, 2), (c, 3)]sorted_by_valuesorted(my_dict.items(),keylambdax:x[1])# [(a, 1), (b, 2), (c, 3)]7. 总结表格特性sorted()list.sort()适用对象任何可迭代对象仅列表返回值新的排序列表None是否修改原数据否是排序稳定性是是掌握sorted()方法及其key参数的灵活使用是编写简洁高效 Python 代码的关键技能之一。

相关新闻

AIGC检测工具怎么选,BunnyCheck、BunnyScholar、助研君每天免费次数实测

AIGC检测工具怎么选,BunnyCheck、BunnyScholar、助研君每天免费次数实测

AIGC检测工具怎么选,BunnyCheck、BunnyScholar、助研君每天免费次数实测现在写论文,查完重复率还得查 AI 疑似度,AIGC 检测成了毕业生的刚需。市面上做 AI 检测的工具不少,其中 BunnyCheck、BunnyScholar、助研君这三家&#xff0…

2026/9/15 0:11:00 阅读更多 →
存储虚拟化与软件定义存储、容灾之间的联系与区别

存储虚拟化与软件定义存储、容灾之间的联系与区别

在越来越强调运维体系化及标准化的时代,管理异构存储对于运维人员来说终究是一件恼人的活。随着快速响应和快速迭代的强烈需求增长,存储的快速扩容和业务无感知已经不再是理论,而是现实情况。存储虚拟化技术为企业的异构存储进行标准化管理&a…

2026/9/22 0:43:40 阅读更多 →
腾讯云Agent Memory:AI智能体长期记忆服务的架构解析与实践指南

腾讯云Agent Memory:AI智能体长期记忆服务的架构解析与实践指南

1. 项目概述:Agent Memory,一个被低估的AI记忆中枢最近腾讯云悄悄上线了一个叫“Agent Memory”的服务,名字听起来有点玄乎,叫“龙虾记忆服务”。我第一眼看到这个标题,脑子里蹦出的也是问号:龙虾&#xff…

2026/9/20 14:18:56 阅读更多 →

最新新闻

移动硬盘不显示图标源码解析:面试避坑指南

移动硬盘不显示图标源码解析:面试避坑指南

移动硬盘不显示图标源码解析:面试避坑指南 面试被问原理答不上来?别慌。很多开发同学在处理 Windows 文件系统或设备驱动相关的需求时,一遇到“移动硬盘不显示图标”这种看似简单实则深奥的问题,脑子就一片空白。这不仅仅是个桌面显示…

2026/9/23 20:07:21 阅读更多 →
ZCode React 性能优化:用 Strategic Suspense Boundaries 实现流式渲染与消除阻塞

ZCode React 性能优化:用 Strategic Suspense Boundaries 实现流式渲染与消除阻塞

【免费下载链接】ZCode Z.ais coding agent harness. Powerful, intelligent, extensible. 项目地址: https://gitcode.com/gh_mirrors/zco/ZCode 点击查看 免费下载 导读 本文讲解 ZCode 仓库内置 React 最佳实践技能(react-best-practices&#xff0…

2026/9/23 20:07:21 阅读更多 →
Vibe Coding方法论争议:环境因素对编码效率的影响分析

Vibe Coding方法论争议:环境因素对编码效率的影响分析

1. 争议背景与核心论点剖析"Vibe Coding"作为近期编程社区热议的概念,其支持者宣称这是一种"通过氛围感知提升编码效率"的方法论。但经过两周的实测和理论推演,我发现这套体系存在三个无法回避的逻辑硬伤:模糊的因果链条…

2026/9/23 20:07:21 阅读更多 →
主成分分析速查手册:大厂面试官揭秘高频考点与避坑指南

主成分分析速查手册:大厂面试官揭秘高频考点与避坑指南

主成分分析速查手册:大厂面试官揭秘高频考点与避坑指南 官方文档翻了三遍还是云里雾里?PCA的数学推导看得头秃,但面试时却问不到重点?别急,这份 主成分分析速查手册 专治各种“看不懂、记不住、答不全”。…

2026/9/23 20:07:21 阅读更多 →
小米rom性能优化实战:3个底层原理让你面试不再露怯

小米rom性能优化实战:3个底层原理让你面试不再露怯

小米rom性能优化实战:3个底层原理让你面试不再露怯 上周陪一个后端兄弟模拟面试,问到“小米手机卡顿怎么从系统层面优化”,他愣了三秒,只憋出一句“杀后台”。面试官皱眉,追问:“底层机制呢?内存回收策略呢?”他彻底卡壳。这种…

2026/9/23 20:07:21 阅读更多 →
3个坑让你彻底搞懂他还不懂,附完整示例

3个坑让你彻底搞懂他还不懂,附完整示例

3个坑让你彻底搞懂他还不懂,附完整示例 刚接手新项目,从同事那里拷来一段代码,双击运行,报错红屏一片。你盯着屏幕发呆,心里只有两个字:懵逼。这种“复制来的代码跑不通,不知道怎么调”的无力感,是无数开发者的噩梦。…

2026/9/23 20:06:20 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →