这题我看到第一反应是做个pair,放数字和索引。然后对数字进行排序,然后双指针。
原来还有哈希表这么神奇的东西。于是我们可以用一个哈希表存储值和索引。
思路如下:
对整个数组遍历:
1.对当前数求补得temp
2.temp不在哈希表中,则将当前数和其索引放入哈希表
3.否则,找到两个数,将索引加1的标号放入答案,结束
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
vector<int> res;
unordered_map<int, int> hash;
for(int i=0;i<numbers.size();++i){
int temp=target-numbers[i];
if(hash.find(temp)==hash.end()){
hash[numbers[i]]=i;
}else{
res.push_back(hash[temp]+1);
res.push_back(i+1);
break;
}
}
return res;
}
};