- 暴力***出现超时,故采用哈希法;
- 每遍历一个numbers[i]就在对应的map中查找是否有target-numbers[i]存在;
- 如果存在,就返回对应map中的value值和当前遍历序号(题目要求下标从1开始)
- 否则,就将当前numbers[i]和下标i加入map;
- 遍历完没有结果就返回空数组。
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
unordered_map<int, int> map;
for (int i = 0; i < numbers.size(); i++) {
auto iter = map.find(target - numbers[i]);
if (iter != map.end()) {
return {iter->second + 1, i + 1};
}
map.insert(pair<int, int>({numbers[i], i}));
}
return {};
}
};