2244.完成所有任务需要的最少轮数
链接:2244.完成所有任务需要的最少轮数
难度:Medium
标签:贪心、数组、哈希表、计数
简介:返回完成所有任务需要的 最少 轮数,如果无法完成所有任务,返回 -1 。
题解 1 - python
- 编辑时间:2024-05-14
- 执行用时:147ms
- 内存消耗:70.3MB
- 编程语言:python
- 解法介绍:遍历。
@cache
    def check(num: int) -> int:
        if num == 0: return 0
        if num == 1: return inf
        if num == 2 or num == 3: return 1
        res = min(check(num - 2), check(num - 3))
        if res == inf: return inf
        return res + 1
    class Solution:
        def minimumRounds(self, tasks: List[int]) -> int:
            counter = Counter(tasks)
            res = 0
            for cnt in counter.values():
                check_res = check(cnt)
                if check_res == inf: return -1
                res += check_res 
            return res
题解 2 - python
- 编辑时间:2024-05-14
- 执行用时:99ms
- 内存消耗:31.63MB
- 编程语言:python
- 解法介绍:贪心。
class Solution:
    def minimumRounds(self, tasks: List[int]) -> int:
        counter = Counter(tasks)
        res = 0
        for cnt in counter.values():
            if cnt == 1: return -1
            res += cnt // 3
            if cnt % 3 != 0: res += 1 
        return res