class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { if(nums.empty()) return vector<int>(); vector<int> idx; for(int i=0;i<nums.size();++i){ idx.push_back(i); } #include<algorithm> using namespace std; sort(idx.begin(),idx.end(),[&nums](int a,int b){return nums[a]<nums[b];}); int l=0,r=nums.size()-1; while(l<r){ int left_val=nums[idx[l]],right_val=nums[idx[r]]; int sum=left_val+right_val; if(sum==target) return vector<int>{idx[l],idx[r]}; if(sum>target){ r-=1; }else{ l+=1; } } return vector<int>(); } };