首页 > 其他分享 >【LeetCode】数组能形成多少数对

【LeetCode】数组能形成多少数对

时间:2023-02-16 21:44:48浏览次数:47  
标签:少数 help nums int res 整数 数组 LeetCode

数组能形成多少数对

题目

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

从 nums 选出 两个 相等的 整数
从 nums 中移除这两个整数,形成一个 数对
请你在 nums 上多次执行此操作直到无法继续执行。

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

思路

由于数据范围在0到100之间,直接统计每个数字的个数

    vector<int> numberOfPairs(vector<int>& nums) {
        vector<int> res;
        res.push_back(0);
        res.push_back(0);
        sort(nums.begin(), nums.end());
        int n = nums.size();
        int help[101] = {};
        for(int i = 0; i < n; i ++) {
            help[nums[i]] ++;
        }
        for (int i = 0; i < 101 ; i++) {
            if(help[i] % 2 == 0) {
                res[0] += (help[i] / 2);
            }
            else if (help[i] > 2) {
                res[0] += ((help[i] - 1) / 2);
                res[1] += 1;
            } else {
                res[1] += help[i];
            }
        }
        return res;
    }

标签:少数,help,nums,int,res,整数,数组,LeetCode
From: https://www.cnblogs.com/basilicata/p/17128426.html

相关文章