程式設計之美2 12 快速尋找滿足條件的兩個數

2021-07-02 02:30:48 字數 476 閱讀 1598

題目:

能否快速找出乙個陣列中的兩個數字,讓這兩個數字之和等於乙個給定的值m。

解法一:

窮舉:o(n^2)

解法二:

先排序,再二分查詢m-a[i],

排序o(nlogn),每個數二分查詢o(nlgon)

總的時間複雜度o(nlogn)

解法三:

hash表,給定乙個數字,根據hash對映查詢另乙個數字是否在陣列中,o(1).

總的時間複雜度o(n),額外增加o(n)的hash表儲存空間。

解法四:

先排序,再直接對兩數之和二分查詢

排序o(nlogn),查詢o(n).

總的時間複雜度是o(nlogn)

for(i=0,j=n-1;i

程式設計之美讀書筆記2 12 快速尋找滿足條件的兩個數

找出陣列中的兩個數字,相加等於乙個給定的數字。1 遞迴,從第乙個元素和最後乙個元素相加,如果大於sum,則a b 1,繼續判斷兩個數的和 如果小於sum,則 a 1 b元素,繼續判斷兩個數的和 include using namespace std void find int data,int a,...

程式設計之美2 12 快速尋找滿足條件的兩個數

快速尋找滿足條件的兩個數 程式設計之美2.12 include using namespace std 快速排序演算法 void swap int a,int i,int j int partition int a,int low,int high swap a,low,high while low...

程式設計之美2 12 快速尋找滿足條件的兩個數

題目 給乙個陣列,求陣列中兩個數字之和等於給定數字的元素 解法1 窮舉法,計算兩兩元素的和是否滿足要求,時間複雜度o n 2 public class main 12 public static void findnum int input,int target else public static...