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;
    }
};


posted on 2016-06-25 18:39  胖胖的乓乓  阅读(81)  评论(0编辑  收藏  举报

导航