給定一堆task的難度值,每次可以完成2個(gè)或者3個(gè)難度一樣的task,問一共多少次可以完成所有task,貪心
先統(tǒng)計(jì)每一種難度值的出現(xiàn)次數(shù),分以下幾種情況
1. 只出現(xiàn)一次,那么這個(gè)task無法被單獨(dú)完成,直接return -1
2. 出現(xiàn)mod 3=0次,那么每次完成3個(gè)此類task
3. 出現(xiàn)mod 3=1次,那么每次完成3個(gè)此類task,最后剩4個(gè)此類task每次完成2個(gè)
4. 出現(xiàn)mod 3=2次,那么每次完成3個(gè)此類task,最后剩2個(gè)此類task一次完成
1 #944
2 #Runtime: 2137 ms (Beats 43.75%)
3 #Memory: 26.8 MB (Beats 39.58%)
4
5 class Solution(object):
6 def minimumRounds(self, tasks):
7 """
8 :type tasks: List[int]
9 :rtype: int
10 """
11 cnt = Counter(tasks)
12 ans = 0
13 for i in cnt:
14 if cnt[i] == 1:
15 return -1
16 if cnt[i] % 3 == 0:
17 ans += cnt[i] / 3
18 elif cnt[i] % 3 == 1:
19 ans += 2 + (cnt[i] - 4) / 3
20 elif cnt[i] % 3 == 2:
21 ans += 1 + (cnt[i] - 2) / 3
22 return ans