大家好,我是开车的阿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!