题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
思路:两个指针,分别从前往后,从后往前查找,时间复杂度为O(n)
1 class Solution { 2 public: 3 vector<int> FindNumbersWithSum(vector<int> array,int sum) { 4 vector<int> res; 5 if(array.size()==0)return res; 6 int left=0; 7 int right=array.size()-1; 8 while(left<right) 9 { 10 if(array[left]+array[right]==sum) 11 { 12 res.push_back(array[left]); 13 res.push_back(array[right]); 14 break; 15 }else if(array[left]+array[right]>sum) 16 { 17 --right; 18 }else{ 19 ++left; 20 } 21 } 22 return res; 23 } 24 };