28 lines
752 B
C++
28 lines
752 B
C++
class Solution {
|
|
public:
|
|
vector<int> twoSum(vector<int>& nums, int target) {
|
|
int n = nums.size();
|
|
vector<int> 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<int> 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;
|
|
}
|
|
}; |