题目描述
【新学校选址】
为了解新学期学生暴涨的问题,小乐村要建立所新学校,
考虑到学生上学安全问题,需要所有学生家到学校的距离最短。
假设学校和所有学生家都走在一条直线之上,请问学校建立在什么位置,
能使得到学校到各个学生家的距离和最短。
输入描述
第一行: 整数 n 取值范围 [1 ,1000 ],表示有 n户家庭。
第二行: 一组整数 m 取值范围 [0, 10000 ] ,表示每户家庭的位置,所有家庭的位置都不相同。

代码一:直接利用字典排序
n = int(input())
s = list(map(int,input().split()))
d = {}
for i in range(n):
val = 0
for j in range(n):
val += abs(s[i] - s[j] )
d[s[i]] = val
ld = sorted(d.items(),key=lambda x:(x[1],x[0]))
print(ld[0][0])
代码二:该题目本质是求中位数
import math
# 输入获取
n = int(input())
arr = list(map(int, input().split()))
# 算法入口
def getResult(arr, n):
arr.sort()
if n % 2 == 0:
mid = int(n / 2)
return arr[mid - 1]
else:
return arr[math.floor(n / 2)]
# 算法调用
print(getResult(arr, n))
252

被折叠的 条评论
为什么被折叠?



