文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-rounds-to-complete-all-tasks
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 计数不同难度的数字的个数
  • 对每个数量进行考虑:1不能完成,其他的数字对 3 进行求余
  • 余数是0,直接每次3个,余数是1,先用两个2,剩余的每次3个,余数是2,先用一个2,剩余的每次3个
from collections import Counter
class Solution:def minimumRounds(self, tasks: List[int]) -> int:d = dict(Counter(tasks))nums = d.values()if 1 in nums:return -1ans = 0for num in nums:if num%3 == 0:ans += num//3elif num%3 == 1:ans += 2+(num-4)//3elif num%3 == 2:ans += 1+(num-2)//3return ans

112 ms 30.8 MB Python3


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 6071. 完成所有任务需要的最少轮数相关推荐

  1. C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数

    C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在C ...

  2. 【LeetCode力扣】5814. 新增的最少台阶数 (第250场周赛)蓝湖专场

    [LeetCode力扣]5814. 新增的最少台阶数 题目 代码 题目 给你一个 严格递增 的整数数组rungs,用于表示梯子上每一台阶的 高度 .当前你正站在高度为 0 的地板上,并打算爬到最后一个 ...

  3. LeetCode 2208. 将数组和减半的最少操作次数(优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个正整数数组 nums .每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半.(注意,在后续操作中你可以对减半过的数继续 ...

  4. LeetCode 1758. 生成交替二进制字符串的最少操作数(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个仅由字符 '0' 和 '1' 组成的字符串 s . 一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' . 交替字符串 ...

  5. LeetCode 1553. 吃掉 N 个橘子的最少天数(BFS)

    文章目录 1. 题目 2. 解题 1. 题目 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子. 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子. ...

  6. LeetCode 1536. 排布二进制网格的最少交换次数

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换. 一个符合要求的网格需要满足主对角线以上的格子全部都是 ...

  7. LeetCode 1443. 收集树上所有苹果的最少时间(自底向上DFS)

    1. 题目 给你一棵有 n 个节点的无向树,节点编号为 0 到 n-1 ,它们中有一些节点有苹果. 通过树上的一条边,需要花费 1 秒钟. 你从 节点 0 出发,请你返回最少需要多少秒,可以收集到所有 ...

  8. LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)

    1. 题目 给你一个 m x n 的二进制矩阵 mat. 每一步,你可以选择一个单元格并将它反转(反转表示 0 变 1 ,1 变 0 ).如果存在和它相邻的单元格,那么这些相邻的单元格也会被反转.(注 ...

  9. LeetCode 871. Minimum Number of Refueling Stops 最少加油次数

    LeetCode 871. Minimum Number of Refueling Stops 本题是LeetCode 871题,最少加油次数. 题目描述 A car travels from a s ...

最新文章

  1. 从fig文件中读取数据
  2. 自下而上滚动公告栏(可悬停)
  3. shell连接工具_盘点下我用的顺手的那些工具
  4. Twitch 沈悦时:国内外互联网直播生态差异
  5. HBase学习笔记——概念及原理
  6. 3d打印光固化好还是热固化好_UV专利一览(71) —天啦噜!3D打印上太空!
  7. 多中心临床大数据平台建设及深度应用
  8. 原创 | 万万没想到,JVM内存结构的面试题可以问的这么难?
  9. ZZULIOJ 1100: 求组合数(函数专题)
  10. python字典实现原理_python学习笔记_第7天(字典底层原理+选择结构)
  11. python在线学习pdf_扣丁学堂Python在线学习之将pdf转成图片的方法
  12. startlogging中设置setstdout=false来禁用这个功能。_无线路由器的安全功能,你知道多少?...
  13. 上拉电阻与下拉电阻介绍
  14. 序列化之Java默认序列化技术(ObjectOutputStream与ObjectInputStream)
  15. 非全日制考研计算机教育,22考研之全日制与非全日制的区别
  16. matlab 二维矩形函数,rect矩形函数 matlab中怎样编写矩形函数
  17. OpenCms for MySql安装
  18. java ftps上传_java – 使用FTPS将文件从android传输到服务器
  19. android 多个 前台 挂机,安卓手机如何进行多开挂机?
  20. 我的大学十年 -- 林锐

热门文章

  1. CentOS7 安装或迁移 wordpress(完整迁移)
  2. python pip install指定国内源镜像
  3. linux检查swap配置,Linux环境下swap配置方法
  4. C# Socket 编程详解
  5. 嵌入式Linux系统的构成和启动总结
  6. 最小生成树和最短路径
  7. myeclipse连接mysql怎么调用_myeclipse连接mysql数据库详细步骤
  8. oc51--循环retain
  9. centos下mysql多实例安装3306、3307实例(2014-10-15)
  10. 像阿超那样,花20分钟写一个能自动生成小心四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。 和同学们比较一下各自程序的功能,实现方法的异同,等等...