劍指 遞增陣列和為s的兩個數

2021-10-02 07:55:34 字數 684 閱讀 3816

題目描述

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的

思路:首先是遞增陣列。為了程式的健壯性,

首先我們判斷s是否小於陣列的最小值a[0],小於返回空。

其二陣列 是不是空的,如果非空,陣列個數是否大於1?

我們還是通過活動夾逼方式,從最小值+最大值開始,和大於了s,右邊–。和小於了s,左邊++。直到相等,相等時兩者同時(左++,右–)但是!後來發現,兩個數相距越遠,乘積越小,所以將發現的第一對就直接返回

**:

class

solution

else

if(array[left]

+array[right]

left++

;else}}

};

//遍歷一遍 o(n)

擴充套件,如果不是遞增的順序,是隨機的。1,可以先排序然後活動變化視窗;2,雜湊表,數組建b,鍵值為【s-a[i]】,裡面值為0,然後遍歷陣列a,為b中元素加一,如:s==100. b[97]=0. a[0]==97, a[4]==3,: b[a[i] ]++.再遍歷陣列,為一的輸出。

劍指offer 和為s的兩個數

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。示例 1 輸入 nums 2,7,11,15 target 9 輸出 2,7 或者 7,2 示例 2 輸入 nums 10,26,30,31,47,60 target 40 輸...

劍指offer 陣列中和為S的兩個數

題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。主要思路 設定兩個三個下標l,m,r r為一開始中陣列中小於等於s的下標,m為一開始陣列中小於等於s 2的下標...

劍指offer 和為S的兩個數字

esmp esmp 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 esmp esmp 對應每個測試案例,輸出兩個數,小的先輸出。esmp esmp 首先,先考慮在遞增排序的陣列中找到兩個和為s的數字。這個思路...