劍指Offer——JZ42.和爲S的兩個數字【二分】

題目傳送門


在這裏插入圖片描述


題解

  • 二分答案
  • 對於 a<b<c<d,a+d==b+ca<b<c<d,a+d==b+c 時,一定有 ad<bca*d<b*c
  • 所以輸出乘積最小的只是個幌子,第一次找到的二分答案就是最優解

AC-Code

class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        int L = 0, R = array.size() - 1;
        while(L <= R) {
            if(array[L] + array[R] == sum)
                return {array[L], array[R]};
            else if(array[L] + array[R] < sum)
                ++L;
            else
                --R;
        }
        return {};
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章