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