为了解决新学期学生暴涨的问题,小乐村要建所新学校。考虑到学生上学安全问题,需要所有学生家到学校距离最短。假设学校和所有的学生家,走在一条直线上。请问,学校要建在什么位置,能使得学校到各个学生家的距离之和最短?
输入的第一行是一个整数N(1<=N<=1000),表示有N户家庭。
输入的第二行是一个数组(0<= <=10000),表示每户家庭的位置,所有家庭的位置都不相同。
输出一行,一个整数,表示你确定的学校位置。如有多个位置相同,则输出值最小的位置。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String numStr = sc.nextLine();
int n = Integer.parseInt(numStr);
String line = sc.nextLine();
String[] split = line.split(" ");
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(split[i]);
}
Arrays.sort(nums);
int index = (n - 1) / 2;
System.out.println(nums[index]);
}
6
0 10 20 30 40 50
20
20到各个家庭的距离分别为 20 10 0 10 20 30,总和为 90,最小。
有多个位置满足条件,但是20是最小的那个,所以输出20。
下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路
本文收录于,华为OD机试(JAVA)(2022&2023)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。