美文网首页
【算法题】100032. 使数组为空的最少操作次数

【算法题】100032. 使数组为空的最少操作次数

作者: 程序员小2 | 来源:发表于2023-10-01 09:18 被阅读0次

    题目:

    给你一个下标从 0 开始的正整数数组 nums 。

    你可以对数组执行以下两种操作 任意次 :

    从数组中选择 两个 值 相等 的元素,并将它们从数组中 删除 。
    从数组中选择 三个 值 相等 的元素,并将它们从数组中 删除 。
    请你返回使数组为空的 最少 操作次数,如果无法达成,请返回 -1 。

    示例 1:

    输入:nums = [2,3,3,2,2,4,2,3,4]
    输出:4
    解释:我们可以执行以下操作使数组为空:

    • 对下标为 0 和 3 的元素执行第一种操作,得到 nums = [3,3,2,4,2,3,4] 。
    • 对下标为 2 和 4 的元素执行第一种操作,得到 nums = [3,3,4,3,4] 。
    • 对下标为 0 ,1 和 3 的元素执行第二种操作,得到 nums = [4,4] 。
    • 对下标为 0 和 1 的元素执行第一种操作,得到 nums = [] 。
      至少需要 4 步操作使数组为空。
      示例 2:

    输入:nums = [2,1,2,2,3,3]
    输出:-1
    解释:无法使数组为空。

    提示:

    2 <= nums.length <= 10^5
    1 <= nums[i] <= 10^6

    java代码:

    class Solution {
        public int minOperations(int[] nums) {
            var cnt = new HashMap<Integer, Integer>();
            for (int x : nums) {
                cnt.merge(x, 1, Integer::sum);
            }
            int ans = 0;
            for (int c : cnt.values()) {
                if (c == 1) {
                    return -1;
                }
                ans += (c + 2) / 3;
            }
            return ans;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:【算法题】100032. 使数组为空的最少操作次数

          本文链接:https://www.haomeiwen.com/subject/pwdjbdtx.html