跳到主要内容

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