指针i
从前往后,指针j
从后往前扫描,计算nums[i] + nums[j]
,如果大于target
,就让后指针前移,使数值减小;如果小于target
,就让前指针后移,使数值增大
class Solution {
public:
vector<int> findNumbersWithSum(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
int i = 0, j = nums.size() - 1;
int sum = 0;
while(i <= j) {
if (nums[i] + nums[j] < target) i++;
else if (nums[i] + nums[j] > target) j--;
else {
return vector<int>{nums[i],nums[j]};
}
}
}
};