Leetcode 1.Two Sum
暴力可过,复杂度达到了n^2
用map,复杂度为O(nlogn)
//暴力版本
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>answer;
for(int i=0;i<nums.size()-1;i++){
for(int j=i+1;j<nums.size();j++){
if(nums[i]+nums[j]==target){
answer.push_back(i);
answer.push_back(j);
return answer;
}
}
}
return answer;
}
};
//map版本
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>answer;
map<int,int>Q;
for(int i=0;i<nums.size();i++){
Q.insert(pair<int, int>(nums[i], i));
}
for(int i=0;i<nums.size();i++){
// cout<<nums[i]<<endl;
if(Q.count(target-nums[i]))
{
// cout<<target<<endl;
// cout<<"yes "<<Q[target-nums[i]]<<endl;
if(i!=Q[target-nums[i]]){
answer.push_back(min(Q[target-nums[i]],i));
answer.push_back(max(Q[target-nums[i]],i));
return answer;
}
}
}
return answer;
}
};
浙公网安备 33010602011771号