1. 程式人生 > >劍指offer—-和為S的兩個數字

劍指offer—-和為S的兩個數字

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

答案:

//C++
/*用兩個指標從兩端向中間逼近
如果兩數之和等於所要找的數,輸出並跳出迴圈,因為先找到的兩數之積一定小於後找到的兩數之積(1,2,3,4,5,6)找9,3*6小於4*5;
如果兩數之和大於所要找的數,右邊指標向左移; 如果兩數之和小於所要找的數,左邊指標向右移;
左右指標相逢時結束查詢。 */
class Solution {
public:
    vector<int
>
FindNumbersWithSum(vector<int> array,int sum) { vector<int> v; if(array.empty()) return v; int left=0,right=array.size()-1; while(left<=right){ if(array[left]+array[right] == sum){ v.push_back(array[left]); v.push_back(array
[right]); break; } else if(array[left]+array[right] < sum) ++left; else --right; } return v; } };

相關推薦

offer -- S數字

題目描述 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 AC程式碼 思路雖然很簡單,但是需要注意的地方有很多。 繼續努力。 import java.util.ArrayList; public

offer:S數字

class Solution { public: vector<int> FindNumbersWithSum(vector<int> array,int sum)

offer S數字 python

題目描述 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 樣例 輸入[1,2,3,4,10],11 輸出[1,10] 想法一: 由於是排序好的陣列,所以從最小的數字low開始找,在陣

Offer - S字(Java實現)

題目描述: 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 思路分析: 假設a<b,則ab>(a-

offerS數字

輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的 解題思路:使用雙指標的方式進行處理 java import java.u

offer -- S數字

輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。對應每個測試案例,輸出兩個數,小的先輸出。 ps:邊長相同,正方形的面積

offers數字

題目描述 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 import java.util.ArrayList; public class Solution { pub

offer—-S數字

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

offer-s的倆數字

兩個 list imp 等於 劍指offer 是的 new ber clas 題目描述:輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 思路:首尾雙指針進行移動 ac代碼: 1 impor

offer-S個數

題目如下: 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出 解題思路: 遍歷陣列中的每一項,對每一項進行如下操作

offer--S的最小的個數

輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 這個題,因為給出的陣列是遞增的,所以,從最外層開始判斷。 package JZoffertes

offers個數

題目描述 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: import java.util.ArrayList; public class FindNumbersWithSum { p

Offer——S的連續正數序列

span 他在 int 順序 sse 不能 正確答案 fin i++ 題目描述: 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就

offer-s的連續正數序列

solution string arr OS 包含 i++ import ray spa 題目描述:小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個

Offer--s的連續正數序列

solution 範圍 要求 感覺 輸出 enc 需要 元素 arraylist 和為s的連續正數序列 題目 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至

offer -- S 的連續正數序列

題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你

Offer S的連續正數序列

題目: 輸入一個正數s,打印出所有和為s的連續正數序列(至少含有兩個數)。例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以結果打印出3個連續序列1~5、4~6和7~8。 樣例 輸入:15 輸出:[[1,2,3,4,5],[4,5,6],[7,8]] 解答: 數

offer------S的連續正數序列

題目: 思路: 程式碼: void FindContinuousSequence(int num) { //特例 if(sum<3) return; int small=1,big=2; while(small<big) {

offer——s的連續正整數

由於連續正整數的個數不確定,所以用兩個角標,來控制個數,最後求和。 針對數值操作: class Solution: def FindContinuousSequence(self, tsum): l, r, sum, res = 1, 2, 3, [] while

offer-S的連續整數序列

41.和為S的連續整數序列 題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,2