1 無序陣列中找出兩個數使其和等於給定值

2021-06-25 23:13:06 字數 502 閱讀 4842

碰到這種類似題目可以根據條件不同寫出不同時間複雜度的**:

1.最暴力的遍歷,時間複雜度為o(n^2)

2.一般情況下先排序,再從兩邊向中間搜尋結果,時間複雜度為o(nlogn + n)

int i = 0, j = numbers.size() - 1;

while (i < j)

3.如果陣列所有數都是唯一的,可以用unordered_map,時間複雜度為o(n),空間複雜度為o(n)

本題採用的是第三種方法accept,**如下:

#include #include #include using namespace std;

class solution

nummap[numbers[i]] = i + 1;

} return result;

}};int main()

return 0;

}

交換兩個陣列的值,使其和的差值最小

求解思路 當前陣列 a和陣列 b的和之差為 a sum a sum b a的第 i個元素和b的第 j個元素交換後,a和 b的和之差為 a sum a a i b j sum b b j a i sum a sum b 2 a i b j a 2 a i b j 設x a i b j a a a a ...

乙個無序陣列中兩個數之和等於給定的值sum

問題描述 給定乙個陣列,求兩個數之和 給定值sum的所有組合個數。變形 兩個數之和 sum的任意一組數 方法一 窮舉法 從陣列中任意找兩個數,看其和是否 sum。時間複雜度o n 2 方法二 先排序,然後定義兩個指標,乙個i 0指向陣列頭,乙個j len 1指向陣列的尾,看其和是否 sum 若 則查...

求無序陣列排序後相鄰兩個數的最大差值

缺點 當陣列中元素懸殊很大時,如1 2 100000000,則需要構造乙個長度是100000000的新陣列array,則該方法不可取。假設原陣列長度為n 最大差值肯定出現在空桶附近。非空桶內部最大差值d 空間複雜度 o n 時間複雜度 o n 總共掃瞄3次 int maxgap std vector...