华为OD机试真题 - 构成正方形的数量(Java/Python/JS/C/C++ 2024 B卷 100分)

news2024/9/23 9:32:55

在这里插入图片描述

华为OD机试 2024E卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

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

二、输入描述

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

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

三、输出描述

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

四、Java算法源码

public static void main(String[] args) {
    // 创建一个Scanner对象,用于读取控制台输入
    Scanner sc = new Scanner(System.in);
    
    // 读取一行输入,假设这是一个表示数组大小的字符串
    String numStr = sc.nextLine();
    
    // 将表示数组大小的字符串转换为整数类型
    int n = Integer.parseInt(numStr);

    // 读取下一行输入,这行输入应该包含数组的所有元素(以空格分隔)
    String line = sc.nextLine();
    
    // 使用空格分隔输入的字符串,得到字符串数组
    String[] split = line.split(" ");
    
    // 创建一个大小为n的整数数组
    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]);
}

五、效果展示

1、输入

6
0 10 20 30 40 50

2、输出

20

3、说明

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

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

六、Python算法源码

# 导入需要的库  
from typing import List  
  
# 主函数  
def main():  
    # 创建输入对象  
    sc = input("请输入一个整数n(表示接下来要输入的整数的个数): ")  
    # 将输入的字符串转换为整数  
    n = int(sc)  
  
    # 获取用户输入的n个整数,用空格分隔  
    line = input("请输入{}个整数,用空格分隔: ".format(n))  
    # 使用空格分割字符串,得到整数列表  
    split = line.split()  
    # 转换为整数数组  
    nums = [int(x) for x in split]  
  
    # 对整数数组进行排序  
    nums.sort()  
  
    # 计算中间元素的索引  
    index = (n - 1) // 2  
    # 输出排序后数组的中间元素  
    print(nums[index])  
  
# 如果当前脚本作为主程序运行,则调用main函数  
if __name__ == "__main__":  
    main()

七、JavaScript算法源码

// 导入readline模块用于从标准输入读取数据  
const readline = require('readline');  
  
// 创建readline接口实例  
const rl = readline.createInterface({  
  input: process.stdin,  
  output: process.stdout  
});  
  
// 定义一个函数来读取一行输入  
function readLine() {  
  return new Promise(resolve => rl.question('', resolve));  
}  
  
// 主函数  
async function main() {  
  try {  
    // 读取一行字符串,表示整数n  
    const numStr = await readLine();  
    // 将字符串转换为整数  
    const n = parseInt(numStr, 10);  
  
    // 读取下一行字符串,包含由空格分隔的整数  
    const line = await readLine();  
    // 使用空格分割字符串为数组  
    const split = line.split(" ");  
  
    // 初始化一个长度为n的整数数组  
    const nums = new Array(n).fill(0).map(() => 0);  
  
    // 将分割后的字符串数组转换为整数数组  
    for (let i = 0; i < n; i++) {  
      nums[i] = parseInt(split[i], 10);  
    }  
  
    // 对整数数组进行排序  
    nums.sort((a, b) => a - b);  
  
    // 计算中间元素的索引  
    const index = Math.floor((n - 1) / 2);  
  
    // 输出排序后数组的中间元素  
    console.log(nums[index]);  
  
  } catch (error) {  
    console.error('读取输入时发生错误:', error);  
  } finally {  
    // 关闭readline接口  
    rl.close();  
  }  
}  
  
// 调用主函数  
main();

八、C算法源码

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
  
#define MAX_LINE_LENGTH 1000 // 假设输入行的最大长度为1000  
  
int main(int argc, char *argv[]) {  
    char numStr[MAX_LINE_LENGTH];  
    printf("Enter the number of integers: ");  
    fgets(numStr, sizeof(numStr), stdin); // 读取包含整数个数的字符串  
    numStr[strcspn(numStr, "\n")] = 0; // 移除字符串末尾的换行符  
    int n = atoi(numStr); // 将字符串转换为整数  
  
    char line[MAX_LINE_LENGTH];  
    printf("Enter the integers separated by spaces: ");  
    fgets(line, sizeof(line), stdin); // 读取包含整数的字符串  
    line[strcspn(line, "\n")] = 0; // 移除字符串末尾的换行符  
  
    char *split = strtok(line, " "); // 使用空格作为分隔符来分割字符串  
    int *nums = (int *)malloc(n * sizeof(int)); // 动态分配整数数组  
  
    int i = 0;  
    while (split != NULL) {  
        nums[i] = atoi(split); // 将分割后的字符串转换为整数并存储到数组中  
        split = strtok(NULL, " "); // 继续分割字符串直到没有更多元素  
        i++;  
    }  
  
    // 使用简单的冒泡排序对数组进行排序  
    for (int j = 0; j < n - 1; j++) {  
        for (int k = 0; k < n - j - 1; k++) {  
            if (nums[k] > nums[k + 1]) {  
                int temp = nums[k];  
                nums[k] = nums[k + 1];  
                nums[k + 1] = temp;  
            }  
        }  
    }  
  
    int index = (n - 1) / 2; // 计算中间索引  
    printf("The median integer is: %d\n", nums[index]); // 输出中位数  
  
    free(nums); // 释放动态分配的内存  
    return 0;  
}

九、C++算法源码

#include <iostream>  
#include <sstream>  
#include <vector>  
#include <algorithm>  
  
int main() {  
    std::string numStr;  
    std::getline(std::cin, numStr); // 从标准输入读取一行字符串到numStr  
  
    int n = std::stoi(numStr); // 将字符串转换为整数  
  
    std::string line;  
    std::getline(std::cin, line); // 从标准输入读取一行字符串到line  
  
    std::istringstream iss(line); // 使用istringstream处理字符串  
    std::vector<int> nums; // 定义一个整数向量来存储数字  
    int num;  
    while (iss >> num) { // 从iss中读取数字直到结束  
        nums.push_back(num); // 将读取的数字添加到向量中  
    }  
  
    std::sort(nums.begin(), nums.end()); // 对向量中的数字进行排序  
  
    int index = (nums.size() - 1) / 2; // 计算中间元素的索引  
    std::cout << nums[index] << std::endl; // 输出中间元素  
  
    return 0;  
}


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 E卷 200分)

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

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL密码策略更改(临时+永久)

目录 1、查看数据库当前密码策略 2、查看密码插件&#xff1a; 3、官方文档策略定义 4、更改密码策略 临时修改 &#xff08;1&#xff09;更改密码策略为LOW&#xff0c;改为LOW或0 &#xff08;2&#xff09;更改密码长度 &#xff08;3&#xff09;设置大小写、数字…

【操作系统】操作系统运行环境——中断与异常

中断与异常 导读一、中断机制1.1 中断机制的重要性 二、中断与异常的基本概念2.1 中断与异常的个人理解2.2 内中断与外中断 三、中断与异常的分类四、中断与异常的处理过程结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 在上一篇内…

【C++ | 设计模式】简单工厂模式的详解与实现

1.简单工厂模式概述 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它定义了一个工厂类&#xff0c;由这个类根据提供的参数决定创建哪种具体的产品对象。简单工厂模式将对象的创建逻辑集中到一个工厂类中&#xff0c;从而将对…

认知杂谈32

今天分享 有人说的一段争议性的话 I I 《恋爱中的价值难题》 咱就认识个31岁的哥们&#xff0c;事业有成&#xff0c;一年能挣35 万。他现在正为找对象的事儿犯愁呢。他想找个年轻漂亮的小姑娘谈对象&#xff0c;可又不想在感情上投入太多&#xff0c;就想一边乐呵着&#x…

Linux(CentOS)同步服务器时间之~ntpd

NTP 是 Network Time Protocol&#xff08;网络时间协议&#xff09;的缩写&#xff0c;它是一种用于在计算机系统之间同步时间的协议。NTP 允许网络中的设备通过与一个或多个时间服务器进行通信&#xff0c;来校正自身的系统时钟&#xff0c;确保所有设备上的时间保持高度一致…

演示:基于WPF的DrawingVisual和谷歌地图瓦片开发的地图(完全独立不依赖第三方库)

一、目的&#xff1a;基于WPF的DrawingVisual和谷歌地图瓦片开发的地图 二、预览 三、环境 VS2022&#xff0c;Net7,DrawingVisual&#xff0c;谷歌地图瓦片 四、主要功能 地图缩放&#xff0c;平移&#xff0c;定位 真实经纬度 显示瓦片信息 显示真实经纬度和经纬线 省市县…

[环境配置]Pycharm手动安装汉化插件

在Pycharm-file-setting-Plugins中&#xff0c;搜索chinese&#xff0c;就会出现汉化包 点击install后&#xff0c;在安装时出现这种报错&#xff1a;Plugin "Chinese (Simplified) Language Pack / 中文语言包" was not installed: Invalid filename returned by a …

用 jsPDF 让 PDF 生成触手可及

jsPDF &#xff1a;在浏览器中生成 PDF&#xff0c;从未如此简单- 精选真开源&#xff0c;释放新价值。 概览 jsPDF 是一个开源的 JavaScript 库&#xff0c;专为在浏览器端生成 PDF 文档而设计。它通过提供一个直观且易于使用的 API&#xff0c;使得开发者能够快速地将 PDF 生…

【Kubernetes】持久卷 PV

持久卷 PV 1.什么是持久卷2.创建一个持久卷3.持久卷的访问模式4.持久卷的回收策略 数据卷是在创建 Pod 时通过 挂载目录 来实现数据的共享和持久化的。但是在一个大型系统中&#xff0c;这种方式是非常不利于管理的&#xff0c;因为数据卷把数据的 持久存储 和 供应使用 封装在…

短时傅里叶变换(Short-Time Fourier Transform, STFT),语音识别

高能预警&#xff01;&#xff01;&#xff01; .wav文件为笔者亲自一展歌喉录制的噪声&#xff0c;在家中播放&#xff0c;可驱赶耗子&#xff0c;蟑螂 介绍 短时傅里叶变换&#xff08;Short-Time Fourier Transform, STFT&#xff09;是一种时频分析方法&#xff0c;用于…

智能分拣投递机器人

产品介绍 自研智能分拣投递机器人&#xff0c;专注于物流行业“NC小件”的分拣与投递&#xff0c;机器人运行稳定、分拣效率高&#xff0c;搭配智能分拣投递系统单台机器人最大作业效率可达400件/H&#xff0c;投递效率相较于传统“小黄人“提升了30%-50%&#xff0c;可替代“…

生成艺术,作品鉴赏:物似主人形

2001年&#xff0c;当21岁的我&#xff0c;还在恒基伟业当高级工程师时。我有一个女同事&#xff0c;她有个特别大的杯子用来喝水&#xff0c;不夸张的说&#xff0c;是那种我从来没见过的大杯子&#xff0c;由于她是很大只的那种&#xff0c;她便自嘲说&#xff1a;「物似主人…

RAG增强的视觉问答开发框架

检索增强生成 (RAG) 是一种强大的技术&#xff0c;可以提高大型语言模型 (LLM) 生成的答案的准确性和可靠性。它还提供了检查模型在特定生成过程中使用的源的可能性&#xff0c;从而使人类用户更容易进行事实核查。此外&#xff0c;RAG 可以使模型知识保持最新状态并整合特定主…

前端进阶| 深入学习面向对象设计原则

引言 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种常用的编程范式&#xff0c;它通过将数据和与之相关的操作封装在一起&#xff0c;提供了一种更有组织和易于理解的方式来构建应用程序。在JavaScript中&#xff0c;我们可以使用面…

【持续更新】【Google Play版】淘宝最新国际版10.36.10.20启动更快

功能和国内比基本是差不多的&#xff0c;只不过没有应用内乱七八糟的弹窗&#xff0c;用起来比较舒服&#xff0c;启动也比较快。 像这种软件如何保证是 官方 的呢&#xff1f;毕竟涉及到财产&#xff0c;还是要小心些的。 很简单&#xff0c;修改过的 app 会提示“签名不一致…

Unity本地化id查找器,luaparser函数参数查找

前言&#xff1a; 适用范围&#xff1a;Unity 中需要查找所有预制体里面的某一个脚本的属性值&#xff0c;或者Lua脚本里面的某一个属性值 本文介绍如何查找预制体和Lua脚本里面调用的本地化id 下面首先介绍改插件的功能以及使用方法&#xff0c;然后对该插件的原理进行说明 使…

SOMEIP_ETS_075: Wrong_Message_Type

测试目的&#xff1a; 验证当设备&#xff08;DUT&#xff09;接收到一个包含错误消息类型的SOME/IP请求时&#xff0c;是否能够返回错误消息或忽略该请求。 描述 本测试用例旨在检查DUT在处理一个echoUINT8方法的SOME/IP消息时&#xff0c;如果消息中包含的消息类型不正确&…

【超详细】Linux开发环境搭建指南 | Ubuntu

文章目录 虚拟机安装对比Virtual Box 下载ubuntu 操作系统下载Virtual Box 安装安装ubuntu设置中文语言共享文件夹设置添加输入法安装步骤&#xff0c;参考官方教程 安装 vscode解决主机不能通过ssh连接宿主机网络连接几种网络连接区别主机和宿主机相互 ping通 网络代理 虚拟机…

为k8s准备docker 私有仓库 harbor

目录 一、 环境准备 二、部署docker 二、为Registry提加密传输 三、为仓库建立登陆认证 四、构建harbor 五、上传镜像 然后就是在200上面进行配置了 一、 环境准备 我是用两台虚拟机(红帽9)的&#xff0c;一台172.25.254.10用来部署加密认证仓库&#xff0c;另一台172.2…

从零上手CV竞赛:YOLO方案 # Datawhale AI夏令营

文章目录 平台参赛平台云平台 Task 1 从零上手CV竞赛下载baseline相关文件一键运行baseline&#xff01;&#xff08;大约需要25分钟&#xff09;赛题解析数据集提交结果违法标准注意事项 下载生成的文件结果如图最后要记得关机 不然一直消耗算力 Task 2 建模方案解读与进阶物体…