leetcode 1
想利用pair对应数值与下标的关系,再对容器中的数值进行排序,对排序后的数进行处理。
处理方法是这样的,取第一个数即最小得数和最后一个数即最大的数。
两者相加如果==target 直接退出,得到响应两个数对应的下标(注:最后结果的下标是从小到大的)
两者相加如果<target,则最小的数向后移。
两者相加如果>target,则最大的数向前移.
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, int target) { 4 pair<int,int>a,b,c; 5 vector<pair<int,int>>tot; 6 for(int i=0;i<nums.size();i++) { 7 a=make_pair(nums[i],i); 8 tot.push_back(a); 9 } 10 sort(tot.begin(),tot.end()); 11 for(int i=0,j=nums.size()-1;i<nums.size();) { 12 a=tot[i]; 13 b=tot[j]; 14 if(a.first+b.first==target) { 15 c=make_pair(min(a.second,b.second),max(a.second,b.second)); 16 break; 17 } 18 else if(a.first+b.first<target) 19 i++; 20 else j--; 21 } 22 vector<int>result; 23 result.push_back(c.first); 24 result.push_back(c.second); 25 return result; 26 } 27 };