兩個(gè)排序數(shù)組的交集

如 a[M] b[N]

  1. 最傻瓜式
    每一次從b數(shù)組中取一值,然后在a數(shù)組里逐個(gè)比較是否相等,該算法復(fù)雜度為 O(MN)

  2. 二分查找
    從一個(gè)數(shù)組中取出值后再另一個(gè)數(shù)組中用二分查找法找是否有相等的,算法復(fù)雜度為O(M * lgN)或 O(N * lgM)

  3. 用hashtable
    先把a(bǔ)中的值存在hashtable里,然后對(duì)于每一個(gè)b中的值,判斷是否在a中存在,因?yàn)閔ashtable查找的平均復(fù)雜度為 O(1), 所以,整個(gè)算法復(fù)雜度為O(N), 但是,這里的空間復(fù)雜度為 O(M) 。但是,這種方法適合數(shù)組比較小的情況。因?yàn)槿绻鸻數(shù)組比較大,hashtable會(huì)出現(xiàn)collision的情況,這樣,查找的平均復(fù)雜度就不再是 O(1)。

  4. 算法復(fù)雜度O(M + N)

void arrayJiao(int ar[], int a_len, int br[], int b_len, int tmp[])  
{  
    int i = 0, j = 0, k = 0;  
    while(i < a_len && j < b_len)  
    {  
        if(ar[i] < br[j])  
            i++;  
        if(ar[i] > br[j])  
            j++;  
        if(ar[i] == br[j])  
        {  
            tmp[k++] = ar[i];  
            i++;  
            j++;  
        }  
    }  
  
    for(i = 0; i < k; ++i)  
    {  
        cout<<tmp[i]<<" ";  
    }  
    cout<<endl;  
}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,903評(píng)論 0 33
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,645評(píng)論 18 399
  • 首先總結(jié)以下Java和C、C++中的一般控制臺(tái)輸入方式,方便以后的編程題: java鍵盤輸入 java讀文件(會(huì)自...
    androidjp閱讀 2,382評(píng)論 0 16
  • 多少年以來(lái),提到父親,我只是“喉頭發(fā)緊、鼻子發(fā)酸、眼睛濕潤(rùn)?!昂芸炀陀只謴?fù)平靜。 父親的去世 1999年正月初十,...
    J歡愈空間閱讀 540評(píng)論 0 6
  • 簡(jiǎn)主按:拙作《邯鄲出了個(gè)武靈王》一書自序,近日由《邯鄲學(xué)院學(xué)報(bào)》“書評(píng)”欄目發(fā)表,感謝康香閣老師抬愛,感謝賈建鋼、...
    李延軍閱讀 1,847評(píng)論 7 10

友情鏈接更多精彩內(nèi)容