Java 华为真题-新学校选址

需求:

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

输入描述:

    第一行:整数n取值范围[1,1000],表示有n户家庭。

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

输出描述:

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

输入

5

0 20 40 10 30

输出

20

编码:

public class AddressNew {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("输入用户:");
        int n = sc.nextInt();
        sc.nextLine(); // 这里使用nextLine()来接收上面的'\n'
        System.out.print("输入" + n + "个所有家庭位置:");
        String[] strs = sc.nextLine().split(" ");
        //字符串数组转换成整数数组
        int[] arr = Arrays.asList(strs).stream().mapToInt(Integer::parseInt).toArray();
        //(1)排序
        Arrays.sort(arr);
        System.out.println("排序后数据:"+Arrays.toString(arr));
        //(2)最小距离(求中位数)
        int min = 0;

        //判断是偶数还是奇数,
        if (n % 2 == 0) {
            min = arr[n / 2 - 1];
        } else {
            min = arr[n/2];
        }
        System.out.println("最小距离:" + min);
    }

}

效果:

猜你喜欢

转载自blog.csdn.net/hlx20080808/article/details/132855264