给定一个递增排序的数组和一个数字s,求数组中和为s的俩个数。求乘积最小的俩个数

来源:互联网 发布:初学者模拟炒股软件 编辑:程序博客网 时间:2024/05/17 22:47

代码:

    vector<int> FindNumbersWithSum(vector<int> array,int sum) {        int small=0;        int big=array.size()-1;        vector<int> result;        if(array.size()==0)            return result;        while(small<big){            int curSum=array[small]+array[big];            if(curSum==sum){                //相差最远的俩个数的乘积最小                result.push_back(array[small]);                result.push_back(array[big]);                break;            }            while((array[small]+array[big])<sum && (small<big)){                small++;            }            while((array[small]+array[big])>sum && (small<big)){                big--;            }                    }        /*        int minResult=result[0]*result[1];        int num1=result[0];        int num2=result[1];        for(int i=2;i<result.size();i+=2){            int curMul=result[i]*result[i+1];            if(minResult>curMul){                minResult=curMul;                num1=result[i];                num2=result[i+1];            }        }        cout<<minResult<<num1<<num2<<endl;        */        return result;    }


阅读全文
0 0