传送门
nowcoder
leetcode
题目描述
输入一个升序数组和一个数字,在数组中查找两个数,使得他们的和正好是S。
如果有多对数字的和等于S,返回任意一组即可;
如果无法找出这样的数字,返回一个空数组即可。
C++ 代码 - nowcoder
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 
 | 
 
 class Solution {
 public:
 vector<int> FindNumbersWithSum(vector<int> arr, int sum) {
 if (arr.size() == 0) return vector<int> {};
 
 vector<int> res;
 int low = 0, high = arr.size() - 1;
 while (low <= high) {
 int curSum = arr[low] + arr[high];
 if (curSum == sum) {
 res.push_back(arr[low]);
 res.push_back(arr[high]);
 return res;
 } else if (curSum < sum) {
 low ++;
 } else {
 high --;
 }
 }
 
 return res;
 }
 };
 
 | 
C++ 代码 - leetcode
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | class Solution {public:
 vector<int> twoSum(vector<int>& nums, int target) {
 
 int left = 0, right = nums.size() - 1;
 while (left < right) {
 int sum = nums[left] + nums[right];
 if (sum < target) {
 left ++;
 } else if (sum > target) {
 right --;
 } else {
 return { nums[left], nums[right] };
 }
 }
 
 return {};
 }
 };
 
 |