劍指Offer(牛客版)--面試題57(1):和爲 s 的數字

題目描述

輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。

 

分析:

 

 

完整代碼:

class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        // 聲明一個容器變量
        vector<int> data;
        //檢查輸入的合法性
        if(array.empty())
            return data;
        //聲明一個變量,表示數組的長度
        int length = array.size();
        //聲明兩個變量,表示左邊遊標和右邊遊標
        int ahead = 0;
        int behind = length - 1;
        //聲明一個變量,用來表示兩個數字的和
        int CurrSum = 0;
        //當兩個遊標的沒有相遇
        while(behind > ahead)
        {
            CurrSum = array[ahead] + array[behind];
            //如果 CurrSum 等於 sum
            if(CurrSum == sum)
            {
                //取出兩個數
                data.push_back(array[ahead]);
                data.push_back(array[behind]);
                return data;
                break;
            }
            else if(CurrSum > sum)//如果 CurrSum 大於 sum
                behind--;
            else//如果 CurrSum 小於 sum
                ahead++;
        }
        //返回最中的結果
        return data;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章