和为s的两个数字

来源:互联网 发布:手机所有交友软件 编辑:程序博客网 时间:2024/04/29 20:24

输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 



#include <iostream>#include <vector>using namespace std;class Solution {  public:    vector<int> FindNumbersWithSum(vector<int> array,int sum)     {        vector<int>  res;        if (array.size() == 0)            return res;        int length = array.size();        int low = 0;        int high = length - 1;        int putLow = low;        int putHigh = high;        int multi = 0x7fffffff;        bool find = false;        while (low < high)        {            long long curSum = array[low] + array[high];            if (curSum == sum)            {                find = true;                if (array[low]*array[high] < multi)                {                    multi = array[low]*array[high];                    putLow = low;                    putHigh = high;                                    }                high--;                            }            else if (curSum < sum)                low++;            else                high--;                                         }        if(find == true)        {        res.push_back(array[putLow]);    res.push_back(array[putHigh]);        }    return res;                   }};


0 0