LeetCode 2244. Minimum Rounds to Complete All Tasks
You are given a?0-indexed?integer array?tasks
,?
where?tasks[i]
?represents the difficulty level of a task.?
In each round, you can complete either 2 or 3 tasks of the?same difficulty level.
Return?the?minimum?rounds required to complete all the tasks,?
or?-1
?if it is not possible to complete all the tasks.
?
Example 1:
Input: tasks = [2,2,3,3,2,4,4,4,4,4]
Output: 4
Explanation:?
To complete all the tasks, a possible plan is:
- In the first round, you complete 3 tasks of difficulty level 2.
- In the second round, you complete 2 tasks of difficulty level 3.?
- In the third round, you complete 3 tasks of difficulty level 4.?
- In the fourth round, you complete 2 tasks of difficulty level 4. ??
It can be shown that all the tasks cannot be completed in fewer than 4 rounds,?
so the answer is 4.
Example 2:
Input: tasks = [2,3,3]
Output: -1
Explanation:?
There is only 1 task of difficulty level 2,?
but in each round, you can only complete either 2 or 3 tasks of the same difficulty level. Hence, you cannot complete all the tasks, and the answer is -1.
?
Constraints:
1 <= tasks.length <= 105
1 <= tasks[i] <= 109
所有的任務(wù)都要完成,那么我們就去計算每個任務(wù)出現(xiàn)的次數(shù),如果出現(xiàn)的次數(shù)<2,那么就不能完成,這時候就返回-1;
如果都符合要求,那么就去判斷如何用最少的round去完成,那么我們優(yōu)先用3去判斷余數(shù),余數(shù)為0,直接全部3, 余數(shù)為1,那么相當(dāng)于最后4個任務(wù)要用2次round去完成,
同理余數(shù)是2的時候,最后2個任務(wù)用1次round完成;
下面就是代碼了,主要就是用hashmap即可;
Runtime:?40 ms, faster than?36.31%?of?Java?online submissions for?Minimum Rounds to Complete All Tasks.
Memory Usage:?56.8 MB, less than?61.18%?of?Java?online submissions for?Minimum Rounds to Complete All Tasks.