题目:2341. 数组能形成多少数对 - 力扣(Leetcode)
题目的接口:
class Solution {
public:
vector<int> numberOfPairs(vector<int>& nums) {
}
};
解题思路:
做了一个星期的每日一题,终于终于,力扣出了一道简单题,真是快乐。
这道题的思路很简单,
我的解法是:
遍历数组,直接用哈希计数,当达成题目条件,也就是形成数对的时候,
重置那个数的计数,cnt++,再继续遍历,
最后再遍历哈希表,把不成数对的数的个数加在一起,
将cnt 和 不成数对的数的个数和返回即可。
代码:
class Solution {
public:
vector<int> numberOfPairs(vector<int>& nums) {
//建一个哈希
unordered_map<int, int> map;
int cnt = 0;
//遍历数组
for(const auto& e : nums)
{
//计数
map[e]++;
//形成数对,重置计数
if(map[e] == 2)
{
map[e] = 0;
cnt++;
}
}
int sum = 0;
//遍历哈希,计算剩余数字个数
for(const auto& e : map)
{
sum += e.second;
}
return {cnt, sum};
}
};
过啦!!!
不管怎么说,之前的题目或多或少有借鉴大佬的解题思路,
每次看题解的时候总是觉得:
这怎么想的出来啊,太妙了,站在巨人的肩膀上真的很幸福,
当真正完全用自己的思路写出题目(而且还不是无脑暴力题解的时候)
真的是非常有成就感,心情见小标题:过啦!!!
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。