首页 > 其他分享 >2341. 数组能形成多少数对 【模拟】

2341. 数组能形成多少数对 【模拟】

时间:2023-02-16 17:12:38浏览次数:39  
标签:2341 hashMap nums int 复杂度 整数 数组 模拟

题目

给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以执行以下步骤:

  • nums 选出 两个 相等的 整数
  • nums 中移除这两个整数,形成一个 数对

请你在 nums 上多次执行此操作直到无法继续执行。

返回一个下标从 0 开始、长度为 2 的整数数组 answer 作为答案,其中 answer[0] 是形成的数对数目,answer[1] 是对 nums 尽可能执行上述操作后剩下的整数数目。

难度:简单

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 100

题解

按照题目模拟即可。

class Solution {
    public int[] numberOfPairs(int[] nums) {
        int count = 0, surplus = 0;
        HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>(10);
        for (int num : nums) {
            hashMap.put(num, hashMap.getOrDefault(num, 0) + 1);
        }
        for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {
            if (entry.getValue() % 2 != 0) {
                surplus++;
            }
            count += entry.getValue() / 2;
        }
        return new int[]{count, surplus};
    }
}

本题数据量不大,更快的做法是用数组代替HashMap计数去重。

复杂度分析

  • 时间复杂度:O(N)
  • 空间复杂度:O(N)

最后编辑时间:2023年2月16日17:02:46

标签:2341,hashMap,nums,int,复杂度,整数,数组,模拟
From: https://www.cnblogs.com/tothk/p/17127428.html

相关文章