华为 OD 机考 Java 【求最多可以派出多少支团队】

根据题目,计算在给定人员能力和团队最低要求下,最多能组成多少个符合要求的团队。通过排序和双指针法解决此问题。代码实现包括排序和用两个指针处理单人及双人团队的逻辑。
摘要由CSDN通过智能技术生成

题目

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

输入描述
第一行代表总人数,范围1-500000
第二行数组代表每个人的能力
数组大小,范围1-500000
元素取值,范围1-500000
第三行数值为团队要求的最低能力值,范围1-500000
输出描述
最多可以派出的团队数量

用例
输入 5
3 1 5 7 9
8
输出 3
说明 3、5组成一队 1、7一队 9自己一队 输出3
输入 7
3 1 5 7 9 2 6
8
输出 4
说明 3、5组成一队,1、7一队,9自己一队,2、6一队,输出4
输入 3
1 1 9
8
输出 1
说明 9自己一队,输出1

解题思路

  • 对人员能力数组进行升序排序,以便后续处理。
  • 使用两个指针 l 和 r 分别指向数组的开头和结尾。
  • 首先处理单人组队的情况,即能力大于等于最低要求的人数统计出来。
  • 然后进入双人组队的逻辑:当 l 小于
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codereasy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值