2244. 完成所有任务需要的最少轮数

简介: 【5月更文挑战第7天】

给你一个下标从 0 开始的整数数组 tasks ,其中 tasks[i] 表示任务的难度级别。在每一轮中,你可以完成 2 个或者 3 个 相同难度级别 的任务。

返回完成所有任务需要的 最少 轮数,如果无法完成所有任务,返回 -1 。

示例 1:

输入:tasks = [2,2,3,3,2,4,4,4,4,4]
输出:4
解释:要想完成所有任务,一个可能的计划是:

  • 第一轮,完成难度级别为 2 的 3 个任务。
  • 第二轮,完成难度级别为 3 的 2 个任务。
  • 第三轮,完成难度级别为 4 的 3 个任务。
  • 第四轮,完成难度级别为 4 的 2 个任务。
    可以证明,无法在少于 4 轮的情况下完成所有任务,所以答案为 4 。
    示例 2:

输入:tasks = [2,3,3]
输出:-1
解释:难度级别为 2 的任务只有 1 个,但每一轮执行中,只能选择完成 2 个或者 3 个相同难度级别的任务。因此,无法完成所有任务,答案为 -1 。

提示:

$1 <= tasks.length <= 10^5$
$1 <= tasks[i] <= 10^9$


首先分析一下,只能每轮完成2个或者3个,那么要求轮次最小,那么肯定贪心的想我们肯定优先完成3个任务,那么就有三种情况

  • 最后剩0个:就是直接每轮完成3个,这个是最优的。不用再考虑每轮完成两个的情况。
  • 最后剩一个:剩一个的话我们就需要再向同类之前3个分一个,也就是从3,1变成2,2这样就能够完整的完成任务。但是如果这类任务只有一个,则无法完成
  • 最后剩两个,剩两个我们直接完成这两个任务即可。
func minimumRounds(tasks []int) int {
   
    l:=len(tasks)
    mp:=map[int]int{
   }
    for i:=0;i<l;i++{
   
        mp[tasks[i]]++
    }
    ans:=0
    for _,value:=range mp{
   
        //fmt.Println(a,value)
        if value==1{
   
            return -1
        }
        s:=value%3
        if s==0{
   
            ans+=value/3
        }else {
   
            ans+=value/3+1
        }
    }
    return ans
}
目录
相关文章
|
18天前
|
Rust Java 开发者
5月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区5月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
1409 148
|
18天前
2391. 收集垃圾的最少总时间
【5月更文挑战第6天】 收集垃圾的最少总时间
20 4
|
18天前
可被三整除的最大和
【5月更文挑战第5天】可被三整除的最大和
15 0
|
18天前
2105. 给植物浇水II
【5月更文挑战第4天】给植物浇水II
15 1
|
18天前
|
消息中间件 Kafka 数据库
【后端面经】【消息队列】22 | 消息队列:消息队列可以用来解决什么问题?-02 超时场景+性能问题
【5月更文挑战第7天】 本文介绍了电商中订单超时取消的处理方法,通过使用消息队列实现延时消息。当订单30分钟后未支付,消息队列将触发取消操作,但需注意并发问题,如采用分布式锁或乐观锁避免并发更新订单状态。乐观锁确保只有订单状态为未支付时才允许支付。主流消息队列如RocketMQ支持延迟消息,而Kafka不支持。 使用消息队列的好处在于解耦和提高系统性能、扩展性和可用性。同步调用会导致性能下降,因为必须等待所有调用完成。并发调用虽可提升性能,但仍逊于消息队列,且无法解决扩展性和可用性问题。
30 1
|
18天前
2079. 给植物浇水
【5月更文挑战第3天】给植物浇水
23 0
|
18天前
|
Go
|
18天前
|
Go 数据安全/隐私保护
1652. 拆炸弹
【5月更文挑战第1天】
30 1
|
5天前
|
存储 安全 数据挖掘
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
第4代 AMD EPYC加持,云原生数仓AnalyticDB分析轻松提速。
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
|
3天前
|
人工智能 前端开发 JavaScript
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查
阿里云验证码产品,使用业界先进的风控引擎结合“规则+AI”模型,有效区分真实用户和机器自动化脚本攻击,避免机器请求造成业务损失。主要适用于垃圾注册、刷库撞库,薅羊毛,短信被刷等风险场景。为您提供安全可靠的业务环境。本文为大家介绍验证码使用时滑动验证流程及验证不通过的问题排查。
64415 1
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查

热门文章

最新文章