(D卷,100分)- 寻找身高相近的小朋友(Java & JS & Python)

这道题目要求根据小朋友与小明的身高差进行排序,身高差绝对值最小的排在前面,如果差值相同则身高较小的在前。给出了Java、JavaScript和Python的算法源码来解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取题库不需要订阅专栏,可直接私信我进入CSDN领军人物top1博主的华为OD交流圈观看完整题库、最新面试实况、考试报告等内容以及大佬一对一答疑。
题目描述
小明今年升学到了小学1年级来到新班级后,发现其他小朋友身高参差不齐,然后就想基于各小朋友和自己的身高差,对他们进行排序,请帮他实现排序。

输入描述
第一行为正整数 h和n,0<h<200 为小明的身高,0<n<50 为新班级其他小朋友个数。

第二行为n个正整数,h1 ~ hn分别是其他小朋友的身高,取值范围0<hi<200,且n个正整数各不相同。

输出描述
输出排序结果,各正整数以空格分割,

和小明身高差绝对值最小的小朋友排在前面,

和小明身高差绝对值最大的小朋友排在后面,

如果两个小朋友和小明身高差一样,则个子较小的小朋友排在前面。

用例
输入 100 10
95 96 97 98 99 101 102 103 104 105
输出 99 101 98 102 97 103 96 104 95 105
说明 小明身高100,班级学生10个,身高分别为95 96 97 98 99 101 102 103 104 105,按身高差排序后结果为:99 101 98 102 97 103 96 104 95 105。

题目解析
第一个数字h表示小明的身高。
第二个数字n表示班级中小明之外的其他小朋友的个数。
接下来的n个数字h1到hn表示这些小朋友的身高。
排序规则:
需要根据每个小朋友的身高与小

根据引用\[1\]和引用\[3\]的描述,可以使用以下代码实现对小朋友身高的排序: ```python def calc(): h, n = map(int, input().split()) heights = list(map(int, input().split())) heights = sorted(heights, key=lambda x: (abs(x - h), x)) print(&quot; &quot;.join(map(str, heights))) while True: try: calc() except: break ``` 这段代码首先读取小明的身高和其他小朋友的个数,然后读取每个小朋友身高。接下来,使用`sorted`函数对身高列表进行排序,排序的关键是根据身高差的绝对值和身高本身。最后,将排序后的身高列表转换为字符串并打印出来。 请注意,这段代码使用了`try-except`语句来捕获可能的异常,以确保程序在输入结束后正常退出。 #### 引用[.reference_title] - *1* [javascriptjava两种方式实现 小明今年升学到小学一年级,来到新班级后发现其他小朋友身高参差不齐,...](https://blog.csdn.net/u014125428/article/details/125821448)[target=&quot;_blank&quot; data-report-click={&quot;spm&quot;:&quot;1018.2226.3001.9630&quot;,&quot;extra&quot;:{&quot;utm_source&quot;:&quot;vip_chatgpt_common_search_pc_result&quot;,&quot;utm_medium&quot;:&quot;distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt&quot;}} ] [.reference_item] - *2* [【华为机试】比较身高问题](https://blog.csdn.net/weixin_43520002/article/details/125038375)[target=&quot;_blank&quot; data-report-click={&quot;spm&quot;:&quot;1018.2226.3001.9630&quot;,&quot;extra&quot;:{&quot;utm_source&quot;:&quot;vip_chatgpt_common_search_pc_result&quot;,&quot;utm_medium&quot;:&quot;distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt&quot;}} ] [.reference_item] - *3* [【华为机试真题Python寻找身高相近小朋友](https://blog.csdn.net/forest_long/article/details/126915980)[target=&quot;_blank&quot; data-report-click={&quot;spm&quot;:&quot;1018.2226.3001.9630&quot;,&quot;extra&quot;:{&quot;utm_source&quot;:&quot;vip_chatgpt_common_search_pc_result&quot;,&quot;utm_medium&quot;:&quot;distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt&quot;}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值