这题要注意的是, 3,2,4这种情况。 使用map建成哈希表后,如果target恰好为某个值的2倍,那么map1find的时候也是能够检索到的,但是是不符合题意的。
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
// 使用map<int, int> 数字+索引。逐个便利数组,如果找到,return
map<int, int> map1;
int len = numbers.size();
vector<int> ret;
for (int i = 0; i < len; i++) {
map1[numbers[i]] = i;
}
for (int i = 0; i < len; i++) {
if (map1.find(target - numbers[i]) != map1.end() && (i != map1[target - numbers[i]])) {
ret.push_back(i + 1);
ret.push_back(map1[target - numbers[i]] + 1);
return ret;
}
}
return ret;
}
};