华为OD统一考试 - 求最多可以派出多少支团队

题目描述

用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为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

题目解析

本题要求最多的组队,而组队要求是:

  • 可以1人组队,也可以2人组队
  • 团队的能力值之和需要大于等于最低能力minCap要求

因此,为了组更多队伍,我们应该尽量让单人组队,即:

  • 需要将能力值大于等于minCap的筛选出来,单人组队

然后剩余的人,按照能力值升序排序,定义L,R指针,初始时L=0,R=k-1,k是剩余人总数

接着尝试L,R进行组队:

  • 如果L,R两人的能力之和大于等于minCap,则组队成功,L++,R--
  • 否则,说明L无法和任何人组队,因为R已经是当前最高能力的人,L无法和R组队,则也意味着无法和能力值比R低的人组队,因此L++

在上面过程中,计算出组队个数作为题解。

import Foundation

func ODTest_35() {
    print("第一行代表总人数,范围1-500000")
    let

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试卷题 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论
华为OD统一考试 - 求最多可以派出多少支团队
点赞 回复 分享
发布于 2024-09-21 07:35 四川

相关推荐

问的很简单都秒了,但是面试官没开摄像头,疑似kpi,无后续。一面(35min)(25/3/6)(无后续)    1、自我介绍    2、介绍一下你的那个Python相关项目(本科毕设,web系统+算法模型提供部分接口)    3、Java面向对象有哪些特点呢?详细说一下。    4、介绍一下hashmap;为什么要把链表转换为红黑树呢?红黑树查找的时间复杂度?1.7和1.8的区别。    5、介绍一下concurrentHashmap。    6、synchronized锁和Lock锁有什么区别?    7、公平锁的一个底层是怎么实现的呢?    8、线程池的核心参数、拒绝策略、提交一个任务执行流程?    9、spring有哪些特点?(ioc/aop)    10、spring中对于循环依赖是怎么解决的?    11、MySQL和redis的区别?    12、MySQL的索引结构是什么?    13、MySQL的事务有哪些特性?怎么保证?    14、MySQL的默认隔离级别?可重复读是怎么做到的呢?    15、介绍一下MVCC和快照读readview。    16、一般在什么场景下会使用redis?    17、对于大量的请求,如果此时缓存中还没有写入数据怎么办?    18、介绍一下redis实现的分布式锁。    19、有用过es和mongo DB吗?(知道,没用过)    20、消息中间件用过吗?说一下你的使用场景?    21、一个场景,如果说有一个接口响应的比较慢,如果说让你排查,你会怎么去排查?(上下游接口、大key问题,只答了两,后面试官补充)    无手撕,反问业务。
胖墩墩的查理在学c语言:哥们我是五号面的 流程差不多
查看21道真题和解析
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务