輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。
輸出描述:
對應每個測試案例,輸出兩個數,小的先輸出。
思路 : a+b=c;st a*b盡可能的小,根據常識,a,b之間的差越大,乘積越小,(換個角度想,給你周長一定,怎麼樣的四邊形的面積最大,肯定是正方形),根據這個想法(前提是遞增排序的陣列),從頭尾開始尋找起,如果剛好相等,則返回,如果<,則跳出本次迴圈,如果》,則結束本次迴圈,結合**來看
class solution
else if(array[i]+array[j]精簡下**,上述**的思路,如果大於sum,j–,如果小於,i++;
根據這個思路,精簡下**,如下:(有沒有想起夾逼準則。。。)
class solution
return res;
}};
和為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...