// This is possibly an optimal solution
class Solution {
public:
std::vector<int> twoSum(std::vector<int>& numbers, int target) {
if (numbers.size() == 2) return std::vector<int>{1, 2};
int left = 0, right = numbers.size() - 1;
std::vector<int> result;
result.reserve(2);
while (left < right) {
int sum = numbers[left] + numbers[right];
if (sum > target) right--;
else if (sum < target) left++;
else {
result.push_back(++left);
result.push_back(++right);
break;
}
}
return result;
}
};