题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的
#include <iostream>
#include<vector>
#include<stack>
#include <algorithm>
#include <unordered_map>
using namespace std;
vector<int> FindNumbersWithSum(vector<int> array, int sum) {
vector<int> res;
int left = 0;
int right = (int)array.size() - 1;
while (left < right) {
int s = array[left] + array[right];
if(s < sum) left++;
else if(s > sum) right--;
else{
res.push_back(array[left]);
res.push_back(array[right]);
return res;
}
}
return res;
}
int main() {
vector<int> arr = {-2,-1, 1, 2, 2, 3, 4, 5, 6, 7, 8};
vector<int> res = FindNumbersWithSum(arr,0);
for(auto i:res){
cout<<i<<" "<<endl;
}
}