和為S的兩個數字

2022-05-17 11:07:37 字數 769 閱讀 6933

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

對應每個測試案例,輸出兩個數,小的先輸出。

思路: 定義兩個指標,乙個在最左邊,乙個在最右邊,讓後兩個指標向中間靠攏

當兩個數的和大於s則右邊的向左走,

當兩個數的和小於s則左邊的向右走

當兩個數的和等於s就是要求得數,

不要被乘積最小迷惑了,因為遞增陣列,最小的乘積是左邊的乘最右邊的比如 1*9 和2*8

//

思路:用兩個指標,頭尾指標向中間靠攏,

//當兩數之和大於s時,說明最大值太大了(陣列是遞增的),所以右指標向左移動

//兩數之和小於s時,說明太小了,左指標向右移動

//兩數之和等於s就是所要求的

//乘積最小使迷惑的,當第乙個符合條件就是最小的

class

solution

else

if(array[left]+array[right] > sum) //

說明右邊的太大,

right--;

else

left++;

}return

result;

}};

和為S的兩個數字

題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸入 每個測試案例包括兩行 第一行包含乙個整數n和k,n表示陣列中的元素個數,k表示兩數之和。其中1 n 10 6,k為int 第二行包含n個整數,每個陣列均為i...

和為S的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。class solution public vectorfindnumberswithsum vectorarray,i...

和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。include using namespace std bool twonumberwithsum int data,i...