題目:
能否快速找出乙個陣列中的兩個數字,讓這兩個數字之和等於乙個給定的值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...