思路:
排序+双指针
如果返回的数,排序后用双指针可以直接做
由于返回的是下标,为了保存下标信息另开了一个数组,这样排序后用双指针返回对应下标即可
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>res; vector<pair<int,int>>num; pair<int,int>temp; for(int i=0;i<nums.size();i++) { temp.first=nums[i]; temp.second=i; num.push_back(temp); } sort(num.begin(),num.end()); int i=0; int j=nums.size()-1; while(i<j) { if(num[i].first+num[j].first<target) { i++; } else if(num[i].first+num[j].first>target) { j--; } else { res.push_back(num[i].second); res.push_back(num[j].second); break; } } return res; } };