fzhiy

Running all the time.

【剑指Offer】和为S的两个数字

点击量:5

题目链接

题目描述

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

输出描述:

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

分析:

数组递增,两数和为定值时,要使两数乘积最小,所以顺序查找,第一组和为S的两个数即为所求。 时间复杂度O(nlog(n))

class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        std::vector<int> res;
        for(auto x: array){
            int tmp=sum-x;
            if(find(array.begin(), array.end(), tmp)!=array.end()){
                res.push_back(x);
                res.push_back(tmp);
                return res;
            }
        }
        return res;
    }
};

 

点赞

发表评论

电子邮件地址不会被公开。