元素和差的值建立映射关系,如果差值能在元素中找到说明就是加数
注意:差值和元素值相同时,这个元素值不能使用
class Solution {
public:
int find(vector<pair<int, int>>& m, int f, int a){
//第三个参数:差值和元素值相同时,这个元素值不能使用
for(int i=0; i<m.size(); ++i){
if(i!=a && m[i].first == f)
return i;
}
return -1;
}
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
vector<int> res;
//建立元素和与target差值映射
vector<pair<int, int>> m;
for(int i=0; i<numbers.size(); ++i)
m.push_back(make_pair(numbers[i], target-numbers[i]));
//若差值能在元素值中找到说明就是其中一个加数
for(int i=0; i<m.size(); ++i){
if(find(m, m[i].second, i)!=-1)
res.push_back(i+1);
}
return res;
}
};
京公网安备 11010502036488号