leetcode_2341. 数组能形成多少数对
2341. 数组能形成多少数对 - 力扣(LeetCode)
用到了一个unordered_map
与之前的unordered_set不同
2. 特点与区别
特点 | unordered_map | unordered_set |
---|---|---|
存储内容 | 键值对(key-value ),键唯一 | 唯一键,没有值 |
键的数据类型 | 键的类型可以是任意类型 | 元素(相当于键)也可以是任意类型 |
是否有值 | 有与键相关联的值(value ) | 只有键,没有值 |
插入方式 | map[key] = value 或 insert(pair) | insert(element) |
用途 | 关联键与值,快速查找键对应的值 | 存储唯一的元素,测试是否存在元素 |
class Solution {
public:
vector<int> numberOfPairs(vector<int>& nums) {
unordered_map<int, bool> cnt;
int res = 0;
for (int num : nums){
if ( cnt.count(num) ){ //存在
cnt[num] = !cnt[num];
}else {
cnt[num] = true;
}
if (!cnt[num]){
++res;
}
}
return {res, (int)nums.size() - res * 2};
}
};