和為S的兩個數字

2021-09-22 01:54:54 字數 400 閱讀 6743

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

分析:最直觀的想法是先找到滿足條件的陣列對,然後比較他們的乘積取乘積最小的一組,所以陣列必須要遍歷完,可是我們通過數學公式推導,發現a+b=sum,a和b越遠乘積越小,而一頭一尾兩個指標往內靠近的方法找到的就是乘積最小的情況。如果是乘積最大的情況就是一直找到兩個指標重合,每次找到乙個就將之前返回的結果向量清空然後更新為新找到的。

vectorfindnumberswithsum(vectorarray,int sum) 

else

}return ret;

}

和為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...