劍指Offer之和為S的兩個數字

2021-09-01 21:16:32 字數 968 閱讀 3389

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

輸入:每個測試案例包括兩行:

第一行包含乙個整數n和k,n表示陣列中的元素個數,k表示兩數之和。其中1 <= n <= 10^6,k為int

第二行包含n個整數,每個陣列均為int型別。

輸出:對應每個測試案例,輸出兩個數,小的先輸出。如果找不到,則輸出「-1 -1」

樣例輸入:

6 15

1 2 4 7 11 15

樣例輸出:

4 11

/*********************************

* 日期:2013-11-28

* 題號: 題目1352:和為s的兩個數字

* 結果:ac

* 總結:

**********************************/

#include #include #include int *array;

int findnum(int *array,int n,int m,int &num1,int &num2)

while(begin < end)

else if(sum < m)

else

}//for

return isfound;

}int main()

int result = findnum(array,n,m,num1,num2);

//輸出

if(result == 0)

else

}//while

return 0;

}

劍指offer之和為S的兩個數字

題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出 對應每個測試案例,輸出兩個數,小的先輸出。思路 既然陣列是排好序的,可以採用左右夾逼的做法,找出和為s的兩個數 然後,第一組和為s的兩個數相乘肯定最小,因為...

劍指offer之和為S的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。對應每個測試案例,輸出兩個數,小的先輸出。首先定義兩個指標,第乙個指向首字母,第二個指向尾字母,然後開始判斷,如果相等,就進行返回,如果大於,第二個指標向左移動一位,如果小...

劍指offer之 和為S的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。兩個指標,乙個指向首位,乙個指向末位,求兩指標之和,若為sum則進一步判斷是否乘積與上次的結果較小,若小則替代,若大則不變 若和大於sum,則右指標左移,否則左指標右移。需...