1. 程式人生 > >找出和為定值的數對

找出和為定值的數對

輸入n ( n<= 100,000)個整數,找出其中的兩個數,它們之和等於整數m(假定 肯定有解)。題中所有整數都能用 int 表示

解法一:
1) 將陣列排序,複雜度是O(n×log(n)) 2) 
查詢的時候,設定兩個變數ij,i初值是0,j初值是n-1.
看a[i]+a[j],如果大於m, 就讓j1,如果小於m,就讓i1,直至a[i]+a[j]=m
解法二:
1) 將陣列排序,複雜度是O(n×log(n))
2) 對陣列中的每個元素a[i],在陣列中二分查詢m-a[i],看能否找到。
複雜度log(n) ,最壞要查詢n-2次,所以查詢這部分的複雜度也是O(n×log(n)
)