尋找陣列中滿足和為定值的兩個數或所有可能組合

2021-06-22 03:57:15 字數 457 閱讀 5299

方法一:

如果陣列是無序的,先排序,

然後用兩個指標i、j分別指向陣列的首尾兩端,然後i++,j--,逐次判斷a[i]+a[j]?=sum:

如果某一刻a[i]+a[j]>sum, i不動,j--,

如果某一刻a[i]+a[j]這種演算法的時間複雜度有序o(n)、無序o(n*logn),空間複雜度為o(1)

public static void qiuhe(int a,int sum)else

} }

方法二:

假定要滿足的和為sum,對陣列中的每個數a[i]都判斷sum-a[i]是否在陣列中。這樣就轉換成乙個查詢問題。

如何讓快速的查詢sum-a[i]是否在陣列中呢?可以用雜湊表。

時間複雜度o(n),空間複雜度o(n)。用空間換時間。

陣列 尋找和為定值的兩個數

題目描述 給定乙個陣列和乙個整數,要求在陣列中找到兩個數,使得它們的和為這個整數.方法 排序夾逼 首先使用快速排序演算法把陣列按公升序排列,然後使用夾逼的方法找到答案.即使用兩個指標分別指向陣列的頭和尾 begin,end 1.若arr begin arr end sum 就輸出 2.若arr be...

尋找和為定值的兩個數

尋找和為定值的兩個數 給定乙個陣列 無序或者有序,兩種情況都要考慮 找出和為m的兩個數。最多時間複雜度能有多少?陣列有序的情況,在時間複雜度上我們就省去了排序的o nlogn 我們使用兩端指標掃瞄法是比較簡單的,時間複雜度為o n 空間複雜度為o 1 如下圖所示 然後,判斷它們指向的值之和sum是否...

尋找和為定值的兩個數

描述 輸入乙個陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。分析 如果採取窮舉,複雜度為o n 2 可以換乙個思...