1,two sum:返回数组里面两个数加起来等于给定值的数字的下标
思路:用哈希表来做,在这了直接用了STL中的map将数值与下标进行了映射
代码:
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
vector<int> res;
map<int, int> m;
for(int i = 0; i < numbers.size(); ++i){
if(m.find(target - numbers[i]) != m.end()){
res.push_back(m[target - numbers[i]] + 1);
res.push_back(i + 1);
break; //注意这个break的添加
}
m[numbers[i]] = i;
}
return res;
}
};
2,three sum :返回数组里面3个数加起来为0的所有组合(不能重复)