找出和為固定值的兩個數字

2022-07-26 12:24:10 字數 318 閱讀 2509

在由n個正整數的集合s中,找出最大元素m,滿足m=a + b,其中a,b都是集合s中元素

思路1:首先對集合s排序,時間複雜度nlogn, 然後對排序後的集合做hash,空間複雜度n,m從s中的最大值開始遍歷,再內層遍歷集合中的每個數x,到hash表裡檢測m-x是否在集合中

思路2:先對集合排序,時間複雜度nlogn,再把m從最大值開始遍歷,a和b分別取小於m的最小值和最大值,測試a+b是否等於m,如果小則a右移,如果大則b左移。

int find(int s, int

n) }

return -1;

}

找出排序陣列中和為給定值的兩個數字

題目 輸入乙個已經按公升序排序過的陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如 a sum 15,輸出6,9.思路 因為陣列是有序的,因此我們可設兩個指標left,right,分別從頭和從尾部遍...

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