题目
给你一个下标从 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