文章出處

題目描述
輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等于S,輸出兩個數的乘積最小的。
輸出描述:
對應每個測試案例,輸出兩個數,小的先輸出。

首先一個坑是,返回值的問題。題目描述說返回兩個數字,并且小的在前面,大的在后面。
C++的返回值明明只有一個啊?那就要放到數組或者其他容器里面,或者作為一個對象返回。。本題中使用vector容器進行存儲。

其次容易想到兩邊夾的方法,直接寫就好了

class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> a,int sum) {
        int i=0, j=a.size()-1;
        vector<int>res;
        while(i<j){
            int t = a[i] + a[j];
            if(t==sum){
                res.push_back(a[i]);
                res.push_back(a[j]);
                break;
            }
            if(t<sum){
                i+=1;
            }else{
                j-=1;
            }
        }
        return res;
    }
};

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()