1.O(n^2)
暴力做法
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> ans;
for(int i=0; i<nums.size(); i++){
for(int j=0; j<nums.size(); j++){
if(i==j) continue;
if(nums[i]+nums[j]==target){
ans.push_back(i);
ans.push_back(j);
break;
}
}
if(ans.size()!=0) break;
}
return ans;
}
};
2.O(n*log(n))
利用map进行查找
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> ans;
map<int,int> mp;
for(int i=0; i<nums.size(); i++){
if(i==0){
mp.insert({nums[i],i});
continue;
}
if(mp.find(target-nums[i])!=mp.end()){
ans.push_back(mp[target-nums[i]]);
ans.push_back(i);
break;
}
else mp.insert({nums[i],i});
}
return ans;
}
};