美文网首页
和为S的两个数

和为S的两个数

作者: UAV | 来源:发表于2020-06-21 20:59 被阅读0次

    题目描述

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

    输出描述

    对应每个测试案例,输出两个数,小的先输出。

    class Solution {
    public:
        vector<int> FindNumbersWithSum(vector<int> array, int sum) {
            vector<int> result;
            //用来存储两个数字
            int num1 = 0, num2 = 0;
            //用来保存两个数字的乘积
            int product = INT_MAX;
            int i = 0, j = array.size() - 1;
            while (i < j)
            {
                //两个数字求和  ,两个数字求积,如果符合要求更新连个数字的最小乘积
                if ((array[i] + array[j] == sum) && (array[i] * array[j] < product)) {
                    num1 = array[i];
                    num2 = array[j];
                    product = num1*num2;
                }
                else if (array[i] + array[j] > sum) {
                    j--;
                }
                else
                {
                    i++;
                }
            }//如果找到两个数的乘积为S
            if (product < INT_MAX) {
                result.push_back(num1);
                result.push_back(num2);
            }
            return result;
        }
    };
    

    相关文章

      网友评论

          本文标题:和为S的两个数

          本文链接:https://www.haomeiwen.com/subject/hvfzxktx.html