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