class Solution { public: vector twoSum(vector& nums, int target) { int n = nums.size(); vector idxs; for(int i = 0; i < n; i++) idxs.push_back(i); // Can't be sorted directly sort(idxs.begin(), idxs.end(), [&nums](int i, int j){ return nums[i] < nums[j]; }); int l = 0, r = n - 1; vector res; while(l < r){ int sum = nums[idxs[l]] + nums[idxs[r]]; if(sum == target){ res.push_back(idxs[l]); res.push_back(idxs[r]); break; }else if(sum > target){ r--; }else{ l++; } } return res; } };