【华为OD题库-086】最多团队-Java

news/2024/7/20 17:30:43 标签: 华为od, java

题目

题目描述:
用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或2人组成,且1个人只能参加1个团队,请计算出最多可以派出多少支符合要求的团队?
输入描述:
5
3 1 5 7 9
8
第一行数组代表总人数,范围[1,500000]
第二行数组代表每个人的能力,每个元素的取值范围[1,500000],数组的大小范围[1,500000]
第三行数值为团队要求的最低能力值,范围[1,500000]
输出描述:
3
最多可以派出的团队数量
示例1:
输入
5
3 1 5 7 9
8
输出
3
说明
3,5组成—队,1,7组成一队,9自己一个队,故输出3
示例2:
输入
7
3 1 5 7 9 2 6
8
输出
4
说明
1、7组成—队,3、5—队,2、6—队,9自己一队,输出4
示例3:
输入
3
1 1 9
8
输出
1
说明
1、9组成—队或者9自己—队输出1

思路

双指针解法:

将输入nums从小到大排序,i指向起始位置0,j指向最后一个位置nums.length-1
先将j左移,直到nums[j]<target,大于target的均可以单独一组。
接下来,将nums[j]+nums[i]记作t,看其是否能组成一队?
如果t大于等于target,说明能组一队,此时将i++,j–,寻找下一组
如果t小于target,说明能力不够,nums[j]和nums[i]不能组队,此时将i右移调大,使总能力更大才有可能组队
最后统计总的组队数即可

题解

java">package hwod;

import java.util.Arrays;
import java.util.Scanner;

public class MostTeam {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = sc.nextInt();
        }
        int min = sc.nextInt();
        System.out.println(mostTeam(nums, min));
    }

    private static int mostTeam(int[] nums, int min) {
        Arrays.sort(nums);
        int res = 0;
        int i = 0, j = nums.length - 1;
        while (j >= 0 && nums[j] >= min) {
            j--;
            res++;
        }
        if (j < 0) return res;//每一个都大于等于min,直接单独组队即可
        while (i < j) {
            int t = nums[i] + nums[j];
            if (t >= min) {
                res++;
                j--;
            }
            i++;
        }
        return res;

    }
}


推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。


http://www.niftyadmin.cn/n/5245278.html

相关文章

Tomcat的初步学习

Tomcat ~~ 一个 HTTP 服务器 HTTP协议就是HTTP客户端和HTTP服务器之间通信使用的协议, HTTP客户端就是浏览器(当然也有别的). HTTP服务器,则有很多种实现. tomcat 是 Java 圈子中, 最知名, 最广泛使用的 HTTP 服务器 Tomcat的下载安装 官网链接 Apache (阿帕奇)最早也是个开源…

(分类)KNN算法- 参数调优

在此专栏的上一篇文章的基础上&#xff0c;进行交叉实验获取最佳的K值 上一篇文章&#xff1a;KNN算法案例-鸢尾花分类 数据拆分的过程&#xff1a; 交叉验证&#xff08;Cross Validation&#xff09; 是一种在机器学习中广泛使用的模型评估和参数调优方法。在训练模型时&…

Java 简易版 UDP 多人聊天室

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

【JavaScript】JS——Map数据类型

【JavaScript】JS——Map数据类型 什么是Map?特性Map与Object的比较 map的创建map的属性map相关方法map的遍历 什么是Map? 存储键值对的对象。 能够记住键的原始插入顺序任何值&#xff08;对象或原始值&#xff09;都可以作为键或值。 特性 Map中的一个键只能出现一次&am…

RestTemplate硬编码的使用

RestTemplate是由Spring框架提供的一个可用于应用中调用rest服务的类它简化了与http服务的通信方式&#xff0c;统一了RESTFul的标准&#xff0c;封装了http连接&#xff0c;我们只需要传入url及其返回值类型即可。相较于之前常用的HttpClient&#xff0c;RestTemplate是一种更…

<软考>软件设计师-3程序设计语言基础(总结)

(一) 程序设计语言概述 1 程序设计语言的基本概念 1-1 程序设计语言的目的 程序设计语言是为了书写计算机程序而人为设计的符号语言&#xff0c;用于对计算过程进行描述、组织和推导。 1-2 程序语言分类 低级语言 : 机器语言&#xff08;计算机硬件只能识别0和1的指令序列)&…

婚庆品牌网站建设的作用是什么

每年新婚人数众多&#xff0c;婚庆行业发展迅速&#xff0c;大小品牌、连锁店也很多&#xff0c;而在市场竞争激烈环境下&#xff0c;商家们也需要跳出困境&#xff0c;多方面引流、提升品牌形象、获得更多线索转化。 而在实际运作中&#xff0c;网站的效果非常明显&#xff0…

APP兼容性测试,这几个面试硬技能,包教包会

兼容性测试主要通过人工或自动化的方式&#xff0c;在需要覆盖的终端设备上进行功能用例执行&#xff0c;查看软件性能、稳定性等是否正常。 对于需要覆盖的终端设备&#xff0c;大型互联网公司&#xff0c;像 BAT&#xff0c;基本都有自己的测试实验室&#xff0c;拥有大量终…