和为S的两个数字

题目描述

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

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

代码

class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        vector<int> ans;
            
        vector<int>::iterator it;
        for (auto num : array) {//从小到大遍历数组
            int k = sum - num;
            it = lower_bound(array.begin(), array.end(), k);
            if (it == array.end()) {
                break;
            }
            if (*it == k) {//另外一个数存在,即为乘积最小
                ans.push_back(num);
                ans.push_back(k);
                break;
            }
        }
        return ans;
        
    }
};

posted on 2017-03-20 21:01  jec  阅读(114)  评论(0编辑  收藏  举报

导航