利用hash表来查找target-numbers[i]// 时间复杂度为O(n)
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
int n = numbers.size();
vector<int> res;
unordered_map<int, int > hash;
for(int i = 0; i < n; i++) {
int x = target - numbers[i]; // 利用hash寻找与当前元素相加等于target的数
if(hash.find(x) == hash.end()){
hash[numbers[i]] = i; // 没有找到当前匹配的元素,将它hash表中
}else{
res.push_back(hash[x] + 1);
res.push_back(i + 1);
break;
}
}
return res;
}
};