Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
给定一堆task的难度值,每次可以完成2个或者3个难度一样的task,问一共多少次可以完成所有task,贪心

先统计每一种难度值的出现次数,分以下几种情况
1. 只出现一次,那么这个task无法被单独完成,直接return -1
2. 出现mod 3=0次,那么每次完成3个此类task
3. 出现mod 3=1次,那么每次完成3个此类task,最后剩4个此类task每次完成2个
4. 出现mod 3=2次,那么每次完成3个此类task,最后剩2个此类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

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理