和為S的兩個數字

2022-08-11 19:51:31 字數 554 閱讀 1569

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

這道題我們用unordered_set來做,讀入乙個數x,我們就把它插入到unordered_set中,並在雜湊表中看一下sum-x 是不是已經在unordered_set中存在了,如果已經存在,並且題目已知陣列是遞增排序的,所以sum-x一定是小於x的。那麼這兩個數就找到了,輸出(sum-x , x)。但題目還要求如果有多對,輸出乘積最小的,因此另開乙個二維陣列res記錄答案對,每次找到符合條件的答案對,就比較這個答案對和之前答案對的乘積的大小,如果新的答案對的乘積更小,就把原來的答案對pop_back出去,讓新的進來。最後輸出res[0]就好了。

c++**如下:

1

class

solution );14}

15}16}

17if(res.empty()) return vector({});

18return res[0

];19

}20 };

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