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