预订酒店问题
一、题目题目描述放暑假了小明决定到某旅游景点游玩他在网上搜索到了各种价位的酒店长度为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/8/17 15:01:34 阅读更多 →
存储虚拟化与软件定义存储、容灾之间的联系与区别

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

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

2026/8/17 16:49:12 阅读更多 →
腾讯云Agent Memory:AI智能体长期记忆服务的架构解析与实践指南

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

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

2026/8/17 13:59:45 阅读更多 →

最新新闻

锤子助手第064个开关:字体注入网页的位置、验证方法与网页显示安全边界

锤子助手第064个开关:字体注入网页的位置、验证方法与网页显示安全边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/8/18 13:47:31 阅读更多 →
解锁编程潜力,从掌握GitHub开始

解锁编程潜力,从掌握GitHub开始

目录: 一、搜索开源项目 1、什么是Git 2、Github常用词含义 3、一个完整的项目界面 4、使用Github搜索项目 二、访问速度慢的解决 1、使用网易UU 2、使用Steam 3、最简单方法 三、创建与下载工程 1、创建与删除仓库 2、上传工程文件 3、下载工程 一、搜…

2026/8/18 13:47:31 阅读更多 →
免费AI音频处理插件指南:音频分离、语音转文字、降噪、作曲,Audacity一次全升级

免费AI音频处理插件指南:音频分离、语音转文字、降噪、作曲,Audacity一次全升级

免费AI音频处理插件指南:音频分离、语音转文字、降噪、作曲,Audacity一次全升级 【免费下载链接】openvino-plugins-ai-audacity A set of AI-enabled effects, generators, and analyzers for Audacity. 项目地址: https://gitcode.com/gh_mirrors/op…

2026/8/18 13:47:30 阅读更多 →
如何为 Terraform Visual 贡献代码?本地开发环境搭建与扩展指南

如何为 Terraform Visual 贡献代码?本地开发环境搭建与扩展指南

如何为 Terraform Visual 贡献代码?本地开发环境搭建与扩展指南 【免费下载链接】terraform-visual Terraform Visual is an interactive way of visualizing your Terraform plan 项目地址: https://gitcode.com/gh_mirrors/te/terraform-visual Terraform …

2026/8/18 13:47:30 阅读更多 →
锤子助手第085个开关:禁用我的页面朋友圈的位置、验证方法与动态数据边界

锤子助手第085个开关:禁用我的页面朋友圈的位置、验证方法与动态数据边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/8/18 13:47:30 阅读更多 →
锤子助手第110个开关:启用表情复读的位置、验证方法与表情授权边界

锤子助手第110个开关:启用表情复读的位置、验证方法与表情授权边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/8/18 13:46:30 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →