当前位置: 首页 > backend >正文

华为OD机试真题——新学校选址(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 A卷 100分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《新学校选址》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C++

C

GO


题目名称:新学校选址


知识点:中位数、排序算法(如快速排序)
时间限制:1秒
空间限制:256MB
限定语言:不限


题目描述

为了缓解新学期学生人数暴涨的问题,小乐村需要建立一所新学校。考虑到学生上学的安全性,学校的位置必须满足所有学生家到学校的距离总和最短。假设学校和所有学生家都位于同一条直线上,请确定学校的最佳选址位置。若存在多个最优位置,则输出最小的位置值

输入描述

  • 第一行:整数 n,表示家庭数量,取值范围 [1, 1000]
  • 第二行:一组整数 m,表示每户家庭的位置(互不相同),取值范围 [0, 10000]

输出描述
一个整数,表示学校的最佳位置。

示例1
输入:

5  
0 20 40 10 30  

输出:

20  

说明:
20到各家庭的距离分别为20、0、20、10、10,总和为60,是最小值。

示例2
输入:

1  
20  

输出:

20  

示例3
输入:

2  
0 20  

输出:

0  

Java

问题分析

题目要求在一条直线上选择一个点建学校,使得所有家庭到该点的距离总和最小。根据数学原理,当数组有序时,中位数的位置能保证距离总和最小。若存在多个最优解,则取位置最小的那个。


解题思路

  1. 排序数组:将家庭位置按升序排列。
  2. 中位数定位:直接取排序后数组的中间位置元素。若数组长度为偶数,取中间两个位置中左侧的值(即索引为 (n-1)/2 的元素),满足题目要求的“最小位置”。

代码实现

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 读取家庭数量int n = sc.nextInt();sc.nextLine(); // 跳过换行符// 读取家庭位置字符串并分割为数组String line = sc.nextLine();String[] parts = line.split(" ");int[] locations = new int[n];for (int i = 0; i < n; i++) {locations[i] = Integer.parseInt(parts[i]);}// 对家庭位置进行排序Arrays.sort(locations);// 计算中位数索引int midIndex = (n - 1) / 2;// 输出最优位置System.out.println(locations[midIndex]);}
}

代码详解

  1. 输入处理

    int n = sc.nextInt();
    sc.nextLine(); // 跳过输入n后的换行符
    
    • 读取家庭数量 n,并处理换行符避免影响后续输入。
    String line = sc.nextLine();
    String[</
http://www.xdnf.cn/news/8987.html

相关文章:

  • 《软件工程》第 5 章 - 需求分析模型的表示
  • Android开机向导定制(1)开机向导加载流程
  • 小土堆pytorch--损失函数与反向传播
  • Godot的RichTextLabel富文本标签,鼠标拖拽滚动,方向键滚动,底部吸附,自动滚动
  • 微信小程序进阶第2篇__事件类型_冒泡_非冒泡
  • 【QT】TXT文件的基础操作
  • 运行打印Hello World启动了多少线程?
  • Python线程同步:保障多线程程序的稳定性与正确性
  • 加速科技荣登2025杭州准独角兽榜单
  • ChatGPT 如何工作——提示工程、对话记忆与上下文管理解析
  • 临床试验中的独立数据监查委员会
  • hadoop纠删码基本原理
  • 【Fifty Project - D31】
  • 【ArcGIS】ArcGIS AI 助手----复现
  • Java设计模式之观察者模式:从基础到高级的全面解析
  • MySql(二)
  • 高效的接口自动化测试工具:Apifox
  • 学习threejs,使用three-spritetext实现黑客帝国数字雨效果
  • Kafka Kraft模式集群 + ssl
  • 14.测速小车(测速模块)
  • Linux连接服务器全攻略:从基础到进阶
  • AI时代新词-生成对抗网络(GAN)
  • 最新Spring Security实战教程(十六)微服务间安全通信 - JWT令牌传递与校验机制
  • CMake指令:set()
  • 行为型:策略模式
  • Flink流处理基础概论
  • 20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载
  • 记录 | Android TextView 中的滚动方向
  • 基于Python flask 的豆瓣电影top250数据评分可视化
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·区间DP