大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
本题考察的是在一个整数数组中查找满足条件的两两匹配的问题。
题目解答方法的文字分析
我们可以使用哈希表来解决这个问题。遍历数组中的每个元素,对于每个元素,我们计算目标值与该元素的差值,并查看这个差值是否在哈希表中存在。如果存在,则说明可以匹配,同时将哈希表中的该差值的出现次数加1。如果不存在,则将该元素存储在哈希表中,并将其出现次数设置为1。最后,我们统计匹配对的个数。
本题解析所用的编程语言 (C++)
C++
完整且正确的编程代码
class Solution { public: int countMatchingPairs(vector<int>& breeds, int target_sum) { unordered_map<int, int> counts; // 哈希表,存储每个元素的出现次数 int matchingPairs = 0; // 匹配对的个数 for (int i = 0; i < breeds.size(); ++i) { int breed = breeds[i]; int diff = target_sum - breed; // 计算目标值与该元素的差值 if (counts.count(diff) > 0) { matchingPairs += counts[diff]; // 更新匹配对的个数 } counts[breed]++; // 存储当前元素的出现次数 } return matchingPairs; } };
您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!