map与set都是利用红黑树实现的,适用于需要排序的地方。
unordered_map,unordered_set都是利用hash来存储值,快速查找。
class Solution {
public:vector<int> twoSum(vector<int> &numbers, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> ans;
unordered_map<int,int> m;
unordered_map<int,int>::iterator it;
for(int pi=1;pi<=numbers.size();pi++){
if(m.find(target-numbers[pi-1])!=m.end()){
it = m.find(target-numbers[pi-1]);
if(it->second<pi) {
ans.push_back(it->second);
ans.push_back(pi);
}
else{
ans.push_back(pi);
ans.push_back(it->second);
}
return ans;
}
else
m[numbers[pi-1]] = pi;
}
return ans;
}
};