双指针(对撞指针)
用i和j分别指向数组头和尾,sum = nums[i] + nums[j]
如果sum > target, j--;
如果sum < target, i++;
如果sum == target,将nums[i]与nums[j]追加到数组中,break;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int> res;
int i = 0, j = nums.size() - 1;
while(i < nums.size() && j >= 0)
{
int sum = nums[i] + nums[j];
if(sum > target)
j--;
else if(sum < target)
i++;
else
{
res.push_back(nums[i]);
res.push_back(nums[j]);
break;
}
}
return res;
}
};