华为OD机试真题 Python 实现【学校的位置】【2023Q1 100分】,附详细解题思路-LMLPHP

一、题目描述

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

二、输入描述

输入的第一行是一个整数N(1<=N<=1000),表示有N户家庭。

输入的第二行是一个数组(0<= <=10000),表示每户家庭的位置,所有家庭的位置都不相同。

三、输出描述

输出一行,一个整数,表示你确定的学校位置。如有多个位置相同,则输出值最小的位置。

四、Python算法源码

import sys

n = int(sys.stdin.readline().strip())
houses = list(map(int, sys.stdin.readline().strip().split()))
houses.sort()

if n % 2 == 0:
    print(houses[n // 2 - 1])
else:
    print(houses[(n - 1) // 2])

五、效果展示

1、输入

6
0 10 20 30 40 50

2、输出

20

3、说明

20到各个家庭的距离分别为 20 10 0 10 20 30,总和为 90,最小。

有多个位置满足条件,但是20是最小的那个,所以输出20。

华为OD机试真题 Python 实现【学校的位置】【2023Q1 100分】,附详细解题思路-LMLPHP


🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试真题 Python 实现【学校的位置】【2023Q1 100分】,附详细解题思路-LMLPHP

07-07 11:10