这题直接撸了一发O(n^2)时间复杂度,后来想一想,多有不妥,遂看讨论,可以用STL,改成O(n)时间复杂度,
O(n^2)很简单,不贴了,
贴个O(n)的:
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
unordered_map<int,int> map;
vector<int> result(2);
for(int i=0;i<numbers.size();i++){
int value=target-numbers[i];
if(map.find(value)!=map.end()){
result[0]=map[value];
result[1]=i+1;
break;
}
map[numbers[i]]=i+1;
}
return result;
}
};