华为OD机试真题——求最多可以派出多少支队伍(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

article/2025/8/28 1:02:22

在这里插入图片描述

2025 A卷 100分 题型

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

华为OD机试真题《求最多可以派出多少支队伍》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO


题目名称:求最多可以派出多少支队伍


  1. 知识点:贪心算法、双指针、排序
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 限定语言:不限

题目描述

用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N。每个团队可以由1人或2人组成,且1个人只能参加1个团队。请计算出最多可以派出多少支符合要求的团队?

输入描述

  • 第一行为总人数,范围[1,500000]。
  • 第二行为每个人的能力值数组,元素取值范围[1,500000],数组大小与总人数一致。
  • 第三行为团队要求的最低能力值N,范围[1,500000]。

输出描述

  • 最多可以派出的团队数量。

示例
输入:

5  
3 1 5 7 9  
8  

输出:

3  

说明:

  • 3和5组成一队(3+5≥8),1和7组成一队(1+7≥8),9单独一队(9≥8),共3队。

Java

问题分析

我们需要从一组人中选出尽可能多的团队,每个团队可以由1人或2人组成,且能力值之和需达到最低要求N。目标是找到最大的团队数量。


解题思路

  1. 排序数组:将能力值从小到大排序,便于双指针操作。
  2. 贪心策略:使用双指针,优先让能力大的人单独成队,若不能则尝试与能力小的人组队。
  3. 双指针操作
    • 右指针从最大能力开始,若单独满足要求则成队。
    • 否则尝试与左指针的人组队,若满足则成队,否则左移找更小能力的人。

代码实现

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int total = scanner.nextInt();int[] abilities = new int[total];for (int i = 0; i < total; i++) {abilities[i] = scanner.nextInt();}int N = scanner.nextInt();Arrays.sort(abilities); // 将能力值排序,便于双指针操作int left = 0;          // 左指针,指向当前最小未处理的能力值int right = total - 1; // 右指针,指向当前最大未处理的能力值int count = 0;         // 统计符合要求的团队数量while (left <= right) { // 当还有人未处理时循环if (abilities[right] >= N) { // 右指针的人能力值达标,单独成队count++;right--; // 处理下一个更大的能力值(指针左移)} else { // 右指针的人无法单独成队,尝试与左指针的人组队if (left < right && abilities[left] + abilities[right] >= N) { // 左右指针不同且组合达标count++;left++; // 左指针右移,处理下一个更小的能力值right--; // 右指针左移,处理下一个更大的能力值} else { // 无法组队,左指针右移(当前右指针的人无法配对,只能放弃)left++;}}}System.out.println(count);}
}

代码详解

  1. 输入处理:读取总人数、能力数组和最低要求N。
  2. 排序:将数组排序,便于双指针从两端向中间处理。
  3. 双指针初始化left指向最小元素,right指向最大元素。
  4. 循环处理
    • 右指针单独成队:若当前右指针的人能力≥N,直接成队。
    • 尝试组队:若左右指针非同一人且能力之和≥N,组队。
    • 无法处理:左指针右移,放弃当前右指针的人。
  5. 输出结果:统计所有可能的队伍数量。

示例测试

  1. 示例输入1

    5
    3 1 5 7 9
    8
    

    输出:3
    说明:3和5组队,1和7组队,9单独成队。

  2. 示例输入2

    2
    4 5
    8
    

    输出:1
    说明:4和5组队。

  3. 示例输入3

    3
    3 3 3
    5
    

    输出:1
    说明:其中两人组队(3+3≥5),剩下一人无法成队。


综合分析

  1. 时间复杂度:O(n log n),排序耗时O(n log n),双指针遍历O(n)。
  2. 空间复杂度:O(1),仅使用常量额外空间。
  3. 正确性
    • 贪心策略确保每次尽可能组成最多的队伍。
    • 排序和双指针处理所有可能的组合。
  4. 适用性
    • 处理大规模数据高效(如50万人)。
    • 逻辑清晰,避免复杂递归或动态规划。
  5. 为何最优
    • 贪心策略优先处理能力大的人,最大化利用高能力值。
    • 双指针保证线性时间复杂度,避免重复计算。

python

问题分析

我们需要从一组人中选出尽可能多的团队,每个团队可以由1人或2人组成,且能力值之和需达到最低要求N。目标是找到最大的团队数量。


解题思路

  1. 排序数组:将能力值从小到大排序,便于双指针操作。
  2. 贪心策略:使用双指针,优先让能力大的人单独成队,若不能则尝试与能力小的人组队。
  3. 双指针操作
    • 右指针从最大能力开始,若单独满足要求则成队。
    • 否则尝试与左指针的人组队,若满足则成队,否则左移找更小能力的人。

代码实现

def max_teams():import sys# 读取输入数据total = int(sys.stdin.readline())          # 总人数abilities = list(map(int, sys.stdin.readline().split()))  # 能力数组N = int(sys.stdin.readline())              # 团队最低能力要求# 将能力数组从小到大排序(排序后:左指针指向最小,右指针指向最大)abilities.sort()left = 0                # 左指针初始指向最小值right = total - 1       # 右指针初始指向最大值count = 0               # 统计符合要求的团队数量# 双指针贪心算法while left <= right:# 如果当前右指针的人能力值 >= N,单独成队if abilities[right] >= N:count += 1right -= 1      # 处理下一个更大的能力值(右指针左移)else:# 尝试与左指针的人组队if left < right and (abilities[left] + abilities[right] >= N):count += 1left += 1   # 左指针右移(处理更小的能力值)right -= 1  # 右指针左移(处理更大的能力值)else:# 无法组队,丢弃当前左指针的人(因为它无法与任何更大的值组队)left += 1print(count)# 示例测试
if __name__ == 

http://www.hkcw.cn/article/EVbvYmfYXT.shtml

相关文章

webrtc初了解

1. webrtc的简介 一、WebRTC 是什么&#xff1f; Web Real-Time Communication&#xff08;网页实时通信&#xff09;&#xff0c;是浏览器原生支持的实时音视频通信技术&#xff0c;无需安装插件或客户端&#xff0c;可直接在浏览器之间实现点对点&#xff08;P2P&#xff09…

【Deepseek 学网络互联】跨节点通信global 和节点内通信CLAN保序

Clan模式下的源端保序与Global类似&#xff0c;目的端保序则退化成通道保序&#xff0c;此时仅支持网络单路径保序。”这里的通道保序怎么理解&#xff1f; 用户可能正在阅读某种硬件架构文档&#xff08;比如NVIDIA的NVLink或InfiniBand规范&#xff09;&#xff0c;因为"…

​Windows 11 安装 Miniconda 与 Jupyter 全流程指南​

​一、Miniconda 安装与配置​ 1. 下载安装程序 ​访问官网​&#xff1a;打开 Miniconda 官网&#xff0c;下载 ​Python 3.x 版本的 Windows 64 位安装包​。​安装路径选择​&#xff1a; 推荐路径&#xff1a;D:\Miniconda3&#xff08;避免使用中文路径和空格&#xff0…

飞牛NAS+Docker技术搭建个人博客站:公网远程部署实战指南

文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress总结 前言 在数字化浪潮中&#xff0c;传统网站搭建方式正面临前所未…

批目标灵活模拟!成都鼎讯雷达模拟器,打造沉浸式雷达对抗训练场景

在现代战争的电磁频谱博弈中&#xff0c;能否构建高度逼真的雷达干扰与目标环境&#xff0c;直接决定着雷达装备性能的上限与作战人员的实战能力。成都鼎讯凭借在数字射频存储&#xff08;DRFM&#xff09;、数字干扰调制&#xff08;DJS&#xff09;等前沿技术的深厚积累&…

GelSight Mini触觉传感器:7μm精度+3D 映射,赋能具身智能精密操作

GelSight Mini 高分辨率视触觉传感器采用先进的光学成像与触觉感知技术&#xff0c;赋予机器人接近人类的触觉能力。该设备可捕捉物体表面微观细节&#xff0c;并生成高精度的2D/3D数字映射&#xff0c;帮助机器人识别形状、纹理及接触力&#xff0c;从而执行更复杂、精准的操作…

【机器学习基础】机器学习入门核心算法:随机森林(Random Forest)

机器学习入门核心算法&#xff1a;随机森林&#xff08;Random Forest&#xff09; 1. 算法逻辑2. 算法原理与数学推导2.1 核心组件2.2 数学推导2.3 OOB&#xff08;Out-of-Bag&#xff09;误差 3. 模型评估评估指标特征重要性可视化 4. 应用案例4.1 医疗诊断4.2 金融风控4.3 遥…

Nacos 配置管理案例:nacos-spring-cloud-config-example详解

一、结构说明&#xff1a;基于Spring Cloud Alibaba的微服务示例 nacos-spring-cloud-config-example : 服务提供者 二、技术栈&#xff1a;Spring BootSpring CloudSpring Cloud Alibaba Nacos Actuator&#xff08;可选&#xff1a;监控&#xff09; 三、使用环境 安装…

Python训练营---Day39

知识点回顾 图像数据的格式&#xff1a;灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 作业&#xff1a;今日代码较少&#xff0c;理解内容即可 1、图像数据的格式&#xff1a;灰度和彩色数…

KeePass安装与KeePass设置中文教程

一、下载KeePass 访问官网&#xff1a;https://keepass.info 1&#xff0c;点击最新版本 2&#xff0c;下载最新版本 3&#xff0c;选择你要下载的版本 二、安装KeePass 1&#xff0c;第一步 2&#xff0c;第二步&#xff08;一直点Next&#xff09; 3&#xff0c;安装…

SQL正则表达式总结

这里写目录标题 一、元字符二、正则表达函数1、 regexp_like(x,pattern[,match_option])2、 regexp_instr(x,pattern[,start[,occurrence[,return_option[, match_option]]]]) 3、 REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]]) 4、 REGEXP_REPLACE(x,patter…

2025 一带一路暨金砖国家技能发展与技术创新大赛 第一届“信创适配及安全管理赛项”样题

2025 一带一路暨金砖国家技能发展与技术创新大赛 第一届“信创适配及安全管理赛项”样题 模块A-理论知识&#xff1a;模块B-适配环境搭建&#xff1a;系统安装与配置&#xff1a;DNS 服务配置&#xff1a;DNS 服务配置&#xff1a;CA 服务配置&#xff1a;Httpd 服务配置&#…

unity编辑器扩展dll形式展示

1.背景&#xff1a;最近搞工程迁移发现一旦c#报错就会导致编辑器菜单没法使用&#xff0c;做了一些尝试发现使用dll的方式会是不错的选择。当然有些工具还是建议用外部的c#工程来写比如winform. 2.遇到的问题&#xff1a;我记得之前2017年左右的时候做一个unity的dll工程并不需…

Nacos | 三种方式的配置中心,整合Springboot3.x + yaml文件完成 0错误 自动刷新(亲测无误)

目录 ValueRefreshScope 导入配置依赖 启动类 添加 EnableDiscoveryClient 控制器 编写 yaml 文件 创建 Nacos Data Id 项目启动问题 测试 ConfigurationProperties 无感自动刷新 导入配置依赖 启动类 添加 EnableDiscoveryClient 控制器 Nacos DataID 模板映射 编…

[嵌入式实验]实验五:freeRTOS

一、实验目的 熟悉开发环境在开发板上通过freeRTOS进行LED控制 二、实验环境 硬件&#xff1a;STM32开发板、CMSIS-DAP调试工具 软件&#xff1a;STM32CubeMX软件、ARM的IDE&#xff1a;Keil C51 三、实验内容 1.实验原理 freeRTOS是一种专门设计的嵌入式实时操作系统&…

【Unity】 HTFramework框架(六十六)缺省的运行时组件检视器

更新日期&#xff1a;2025年5月29日。 Github 仓库&#xff1a;https://github.com/SaiTingHu/HTFramework Gitee 仓库&#xff1a;https://gitee.com/SaiTingHu/HTFramework 索引 一、缺省的运行时组件检视器1.自定义运行时组件检视器 二、使用缺省的运行时组件检视器1.定义组…

Ollama v0.8.0 发布,支持通过工具调用进行流式响应!

在 2025 年 5 月 29 日的 AI 技术浪潮中&#xff0c;实时交互性和高效性成为 AI 应用的核心需求。Ollama 作为一个开源的大型语言模型服务器&#xff0c;持续更新以满足开发者需求。Ollama v0.8.0 的发布特别引入了支持通过工具调用进行流式响应的功能&#xff0c;这一更新引发…

LVS+Keepalived 高可用群集

目录 一、 Keepalived 双机热备核心技术 1.1 Keepalived 架构与 VRRP协议 1.2 双机热备配置深度优化 二、 LVSKeepalived 高可用负载均衡架构 2.1 系统架构设计 2.2 LVS集成配置详解 三、 关键技术与疑难解析 3.1 DR模式 ARP 仰制机制 3.2 健康检查策略优化 四、 企业…

python + vscode 开发环境搭建

一、下载安装Python Python 官网链接Welcome to Python.org 二、Python3.12.7安装 三、Python虚拟环境 开发编译器使用Vscode 1、打开VsCode&#xff0c;键盘输入ctrl shift p 点击完了会在文件夹目录下出现一个.venv的路径。 虚拟环境的作用是隔离不同项目的 Python 环境…

[ Qt ] | QRadioButton和QCheckBox的使用

目录 QRadioButton 常用属性 clicked(bool)信号、pressed信号、released信号 小项目 QRadioButton QRadioButton是一个单选按钮&#xff0c;也是继承自QAbstractButton(继承自QWidget) 常用属性 checkable 是否能选中 checked 是否已经被选中 autoExclusive 是否排…