题目描述
给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。
解题思路
双指针法。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int left = 0, right = numbers.size() - 1; //双指针一头一尾
while (left < right)
{
int curSum = numbers[left] + numbers[right];
if (curSum < target) ++ left; //两数之和小于目标值,则左指针右移
else if (curSum > target) -- right; //两数之和大于目标值,则右指针左移
else return {left, right};
}
return {};
}
};