Medium
You are given a 0-indexed array nums
consisting of positive integers.
There are two types of operations that you can apply on the array any number of times:
Return the minimum number of operations required to make the array empty, or -1
if it is not possible.
Example 1:
Input: nums = [2,3,3,2,2,4,2,3,4]
Output: 4
Explanation: We can apply the following operations to make the array empty:
It can be shown that we cannot make the array empty in less than 4 operations.
Example 2:
Input: nums = [2,1,2,2,3,3]
Output: -1
Explanation: It is impossible to empty the array.
Constraints:
2 <= nums.length <= 105
1 <= nums[i] <= 106
class Solution {
fun minOperations(nums: IntArray): Int {
var count = 0
val map = hashMapOf<Int, Int>()
for (num in nums) map[num] = map[num]?.plus(1) ?: 1
for ((_, v) in map) {
if (v == 1) return -1
count += (v / 3) + (if (v % 3 == 0) 0 else 1)
}
return count
}
}