题目描述
请设计一个高效算法,找出数组中两数之和为指定值的所有整数对。
给定一个int数组A和数组大小n以及需查找的和sum,请返回和为sum的整数对的个数。保证数组大小小于等于3000。
测试样例:
[1,2,3,4,5],5,6
返回:2
class FindPair {
public:
int countPairs(vector<int> A, int n, int sum) {
map<int, int> cnt;
int ans = 0;
for (int i = 0; i < n; ++ i) {
int want = sum - A[i];
ans += cnt[want];
cnt[A[i]] ++;
}
return ans;
}
};