LeetCode in Kotlin

2870. Minimum Number of Operations to Make Array Empty

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:

Solution

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
    }
}