【演算法題】找到陣列中和為固定值的兩個元素
阿新 • • 發佈:2019-02-15
在閱讀的過程中有任何問題,歡迎一起交流
QQ:1494713801
題目:編寫一個函式,輸入為一個int型的陣列numbers和一個int型變數target,找到這個陣列中和為target的兩個元素,輸出其index。
假設每組輸入有且僅有一組輸出
示例:Input: numbers={6, 2, 15, 7,11}, target=9
Output: index1=1, index2=2
解答:
1.查詢法兩層遍歷,最直觀
時間複雜度:O(N*N)
2.排序法
numbers按遞增排序(快排),設定兩個遊標idx1和idx2
Idx1=0
Idx2=numbers.size
如果numbers[idx1]+numbers[idx2]==target,
如果numbers[idx1]+numbers[idx2]>target,則idx2--;
如果numbers[idx1]+numbers[idx2]<target,則idx1++;
時間複雜度: O(N*logN)
3. 利用Map:
建立一個空Map,map中儲存的是已經掃描過的number。
<K, V>為<numbers值,numbers下標>,
對於numbers[i],如果map中存在K=target-numbers[
時間複雜度:O(N)