话不多说,先上代码。
vector<int> twoSum(vector<int> &numbers, int target) {
vector<int> result;
unordered_map<int,int> mapping;
for(int i=0;i<numbers.size();i++){
mapping.insert({numbers[i],i});
}
for(int i=0;i<numbers.size();i++){
int g=target-numbers[i];
if(mapping.find(g)!=mapping.end()&&mapping[g]!=i){
result.push_back(i);
result.push_back(mapping[g]);
break;
}
}
return result;
}
一开始,想用的是暴力直接解决的,但是不知道为什么LeetCode总是会报错,我自己在闲暇跑一遍完全没问题啊【摊手。
不过想了想暴力解决的话,复杂度是O(n^2)。于是选择用哈希图。但是有一个问题,这里的find函数的复杂度是O(1)吗?
是第一次用关联容器,因为其实还没学到,正在自学C++中!
fighting~