华为OD机试 - 新学校选址(Python)| 真题+思路+代码

本文介绍了华为OD机试中的一道题目——新学校选址问题。该问题要求确定一个位置,使得所有学生家到学校的距离和最短。解决方案是找到位置列表的中位数。文章提供了Python代码实现及解题思路,适合理解算法和准备华为机试的读者。

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

华为OD机试 新学校选址

题目

为了解新学期学生暴涨的问题,小乐村要建立所新学校
考虑到学生上学安全问题,需要所有学生家到学校的距离最短.
假设学校和所有学生家都走在一条直线之上,请问学校建立在什么位置,
能使得到学校到各个学生家的距离和最短

输入

第一行: 整数 n 取值范围 [1,1000],表示有 n 户家庭。
第二行: 一组整数 m 取值范围[0,10000] ,表示每户家庭的位置,所有家庭的位置都不相同。

输出描述

一个整数,确定的学校的位置
如果有多个位置,则输出最小的

示例一

输入

5
0 20 40 10 30

输出

20

解题思路

本题的目标是求数组中的中位数。

通过输入得到数组中的元素数量 n,再输入数组的所有元素,存储到列表 sites 中。

然后,调用函数 solve_method() 求解数组的中位数。该函数先将数组排序,如果数组元素个数是偶数,则返回数组中第 len(sites) // 2 - 1 个数;如果数组元素个数是奇数,则返回数组中第 len(sites) // 2 个数。

核心知识点

简单题,无难度。

Python 代码实现

import sys


def solve_method(sites):
    sites.sort(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值