国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)

這篇具有很好參考價(jià)值的文章主要介紹了【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)

When you feel like giving up, remember why you started.

當(dāng)你想放棄時(shí),請(qǐng)記住為什么你開始

01 | ?? 題目描述

給你兩個(gè)數(shù)組,請(qǐng)分別求出兩個(gè)數(shù)組的交集和并集

在數(shù)學(xué)中,我們可以通過(guò)交集和并集來(lái)描述兩個(gè)集合之間的關(guān)系。

  • 交集(Intersection):指的是兩個(gè)集合中共有的元素組成的集合。可以用符號(hào) ∩ 來(lái)表示。例如,對(duì)于集合 A = {1, 2, 3} 和集合 B = {2, 3, 4} 來(lái)說(shuō),它們的交集就是 {2, 3},因?yàn)檫@些元素同時(shí)存在于兩個(gè)集合中。

  • 并集(Union):指的是將兩個(gè)集合中所有的元素取并集組成一個(gè)新的集合??梢杂梅?hào) ∪ 來(lái)表示。例如,對(duì)于集合 A = {1, 2, 3} 和集合 B = {2, 3, 4} 來(lái)說(shuō),它們的并集就是 {1, 2, 3, 4},因?yàn)樗藘蓚€(gè)集合中的所有元素,且去除了重復(fù)的元素。

換句話說(shuō),交集是尋找兩個(gè)集合中相同的元素,而并集則是將兩個(gè)集合中所有的元素合并在一起。

02 | ?? 解題思路

上述數(shù)學(xué)概念同樣適用于數(shù)組。當(dāng)我們要找到兩個(gè)數(shù)組的交集時(shí),我們需要找到它們共有的元素。而當(dāng)我們要找到兩個(gè)數(shù)組的并集時(shí),我們需要將它們中所有的元素合并在一起,并去除重復(fù)的元素。

交集

具體解題思路如下

  1. 首先,定義兩個(gè)數(shù)組A和B,分別表示待求交集的數(shù)組。
  2. 創(chuàng)建一個(gè)空的集合(set)或者哈希集合(unordered_set),用于存儲(chǔ)交集的結(jié)果。集合是一種數(shù)據(jù)結(jié)構(gòu),它只會(huì)存儲(chǔ)不重復(fù)的元素。
  3. 遍歷數(shù)組A中的每個(gè)元素,將其添加到集合中。
  4. 遍歷數(shù)組B中的每個(gè)元素,判斷該元素是否存在于集合中。如果存在,則說(shuō)明它是交集的一個(gè)元素,將其添加到另一個(gè)集合(結(jié)果集合)中。
  5. 最后,將結(jié)果集合中的元素轉(zhuǎn)存到數(shù)組中,得到最終的交集數(shù)組。

【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)

  • 時(shí)間 && 空間復(fù)雜度
    • 時(shí)間復(fù)雜度

      • 遍歷數(shù)組A,將元素添加到集合中:O(n),其中n是數(shù)組A的大小。
      • 遍歷數(shù)組B,判斷元素是否存在于集合中,并將交集元素添加到結(jié)果集合中:O(m),其中m是數(shù)組B的大小。

      所以,總體的時(shí)間復(fù)雜度為O(n + m),我們可以將其簡(jiǎn)化為O(max(n, m)),其中max(n, m)表示兩個(gè)數(shù)組中較大的大小。

    • 空間復(fù)雜度

      • 使用一個(gè)集合來(lái)存儲(chǔ)數(shù)組A中的元素:O(n),其中n是數(shù)組A的大小。
      • 使用一個(gè)結(jié)果集合來(lái)存儲(chǔ)交集元素:最壞情況下,結(jié)果集合的大小為min(n, m),其中n和m分別是數(shù)組A和數(shù)組B的大小。

      所以,總體的空間復(fù)雜度為O(n + min(n, m)),我們可以將其簡(jiǎn)化為O(max(n, m)),其中max(n, m)表示兩個(gè)數(shù)組中較大的大小。

并集

  • 具體的解題流程

    1. 首先,定義兩個(gè)數(shù)組A和B,分別表示待求并集的數(shù)組。
    2. 創(chuàng)建一個(gè)空的集合(set)或者哈希集合(unordered_set),用于存儲(chǔ)并集的結(jié)果。集合是一種數(shù)據(jù)結(jié)構(gòu),它只會(huì)存儲(chǔ)不重復(fù)的元素。
    3. 遍歷數(shù)組A中的每個(gè)元素,將其添加到集合中。
    4. 遍歷數(shù)組B中的每個(gè)元素,判斷該元素是否存在于集合中。如果不存在,則說(shuō)明它是并集的一個(gè)元素,將其添加到集合中。
    5. 最后,將集合中的元素轉(zhuǎn)存到數(shù)組中,得到最終的并集數(shù)組。

【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)

  • 時(shí)間 && 空間復(fù)雜度
    • 時(shí)間復(fù)雜度
      將數(shù)組A中的元素插入集合:O(n),其中n是數(shù)組A的大小。
      遍歷數(shù)組B,并將元素插入集合:O(m),其中m是數(shù)組B的大小。
      因此,總體的時(shí)間復(fù)雜度為O(n + m),我們可以將其簡(jiǎn)化為O(max(n, m)),其中max(n, m)表示兩個(gè)數(shù)組中較大的大小
    • 空間復(fù)雜度
      創(chuàng)建一個(gè)集合來(lái)存儲(chǔ)并集的結(jié)果:O(n + min(n, m)),其中n和m分別是數(shù)組A和數(shù)組B的大小。 在最壞情況下,如果兩個(gè)數(shù)組沒(méi)有重復(fù)元素,集合的大小為n + m。
      創(chuàng)建一個(gè)數(shù)組來(lái)存儲(chǔ)集合中的元素:O(n + min(n, m)),與創(chuàng)建集合的過(guò)程相同。
      所以,總體的空間復(fù)雜度為O(n + min(n, m)),我們可以將其簡(jiǎn)化為O(max(n, m)),其中max(n, m)表示兩個(gè)數(shù)組中較大的大小
      因此,整個(gè)算法的

03 | ?? 代碼片段

交集

#include <iostream>
#include <unordered_set>
#include <vector>

std::vector<int> intersection(std::vector<int>& A, std::vector<int>& B) {
    std::unordered_set<int> setA(A.begin(), A.end()); // 將數(shù)組A中的元素放入集合
    std::unordered_set<int> resultSet;
    
    for (int num : B) {
        if (setA.count(num) > 0) { // 判斷num是否存在于集合setA中
            resultSet.insert(num); // 將num添加到結(jié)果集合中
        }
    }
    
    std::vector<int> result(resultSet.begin(), resultSet.end()); // 將結(jié)果集合轉(zhuǎn)存到數(shù)組中
    return result;
}

int main() {
    std::vector<int> A = {1, 2, 3, 4, 5};
    std::vector<int> B = {4, 5, 6, 7, 8};
    
    std::vector<int> result = intersection(A, B);
    
    std::cout << "Intersection: ";
    for (int num : result) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    
    return 0;
}

【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)

并集

#include <iostream>
#include <unordered_set>
#include <vector>

std::vector<int> unionSet(std::vector<int>& A, std::vector<int>& B) {
    std::unordered_set<int> resultSet(A.begin(), A.end()); // 將數(shù)組A中的元素放入集合

    for (int num : B) {
        resultSet.insert(num); // 將數(shù)組B中的元素添加到集合中
    }
    
    std::vector<int> result(resultSet.begin(), resultSet.end()); // 將集合轉(zhuǎn)存到數(shù)組中
    return result;
}

int main() {
    std::vector<int> A = {1, 2, 3, 4, 5};
    std::vector<int> B = {4, 5, 6, 7, 8};
    
    std::vector<int> result = unionSet(A, B);
    
    std::cout << "Union Set: ";
    for (int num : result) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    
    return 0;
}

【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)

【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-504934.html

各位大佬點(diǎn)點(diǎn)關(guān)注,點(diǎn)贊,收藏,有空的時(shí)候再回來(lái)看看,謝謝

到了這里,關(guān)于【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 02 | 數(shù)組的并交集(解題思路、流程圖、代碼片段)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 讀程序員的制勝技筆記02_算法與數(shù)據(jù)結(jié)構(gòu)

    讀程序員的制勝技筆記02_算法與數(shù)據(jù)結(jié)構(gòu)

    3.1.1.1.?根據(jù)你的需要,可以有更智能的算法 3.1.3.1.?算法本身并不意味著它很聰明 3.2.1.1.?public static bool Contains(int[] array, int lookFor) { for (int n = 0; n < array.Length; n++) { ???????if (array[n] == lookFor) { ???????????return true; ???????} ???} ???return false; } 3.3.1.1.?public sta

    2024年02月06日
    瀏覽(43)
  • 【算法 & 高級(jí)數(shù)據(jù)結(jié)構(gòu)】樹狀數(shù)組:一種高效的數(shù)據(jù)結(jié)構(gòu)(一)

    【算法 & 高級(jí)數(shù)據(jù)結(jié)構(gòu)】樹狀數(shù)組:一種高效的數(shù)據(jù)結(jié)構(gòu)(一)

    ?? 個(gè)人主頁(yè) :為夢(mèng)而生~ 關(guān)注我一起學(xué)習(xí)吧! ?? 專欄 :算法題、 基礎(chǔ)算法~趕緊來(lái)學(xué)算法吧 ?? 往期推薦 : 【算法基礎(chǔ) 數(shù)學(xué)】快速冪求逆元(逆元、擴(kuò)展歐幾里得定理、小費(fèi)馬定理) 【算法基礎(chǔ)】深搜 樹狀數(shù)組 (Binary Indexed Tree,BIT)是一種數(shù)據(jù)結(jié)構(gòu),用于高效地處理

    2024年03月11日
    瀏覽(27)
  • 【算法 & 高級(jí)數(shù)據(jù)結(jié)構(gòu)】樹狀數(shù)組:一種高效的數(shù)據(jù)結(jié)構(gòu)(二)

    【算法 & 高級(jí)數(shù)據(jù)結(jié)構(gòu)】樹狀數(shù)組:一種高效的數(shù)據(jù)結(jié)構(gòu)(二)

    ?? 個(gè)人主頁(yè) :為夢(mèng)而生~ 關(guān)注我一起學(xué)習(xí)吧! ?? 專欄 :算法題、 基礎(chǔ)算法、數(shù)據(jù)結(jié)構(gòu)~趕緊來(lái)學(xué)算法吧 ?? 往期推薦 : 【算法基礎(chǔ) 數(shù)學(xué)】快速冪求逆元(逆元、擴(kuò)展歐幾里得定理、小費(fèi)馬定理) 【算法基礎(chǔ)】深搜 數(shù)據(jù)結(jié)構(gòu)各內(nèi)部排序算法總結(jié)對(duì)比及動(dòng)圖演示(插入排序

    2024年03月26日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

    數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

    數(shù)組(Array)應(yīng)該是最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)之一,它由相同類型的元素組成的集合,并按照一定的順序存儲(chǔ)在內(nèi)存中。每個(gè)元素都有一個(gè)唯一的索引,可以用于訪問(wèn)該元素。 數(shù)組索引(Index): 數(shù)組中的每個(gè)元素都有一個(gè)唯一的整數(shù)索引,從0開始計(jì)數(shù)。索引用于訪問(wèn)數(shù)組中的元素

    2024年02月08日
    瀏覽(57)
  • 數(shù)據(jù)結(jié)構(gòu)與算法(一): 稀疏數(shù)組

    數(shù)據(jù)結(jié)構(gòu)與算法(一): 稀疏數(shù)組

    在五子棋游戲或類似的游戲中,我們可以把整個(gè)棋盤想象成是一個(gè)有規(guī)律的二維數(shù)組,其值由0、1、2三個(gè)數(shù)字組成,0代表空白區(qū)域,1代表白子,2代表黑子。這種情況:即當(dāng)一個(gè)數(shù)組中大部分元素為0或者為同一值時(shí),存儲(chǔ)該數(shù)組數(shù)據(jù)可以使用稀疏數(shù)組來(lái)對(duì)原始數(shù)組進(jìn)行精簡(jiǎn),

    2024年02月11日
    瀏覽(38)
  • JavaScript數(shù)據(jù)結(jié)構(gòu)與算法整理------數(shù)組

    ? ? ? ? 數(shù)組的標(biāo)準(zhǔn)定義: 一個(gè)存儲(chǔ)元素的線性集合,元素可以通過(guò)索引來(lái)任意存取,索引通常是數(shù)字,用來(lái)計(jì)算元素之間存儲(chǔ)位置的偏移量 ,幾乎所有的編程語(yǔ)言都有類似的數(shù)據(jù)結(jié)構(gòu),而JavaScript的數(shù)組略有不同。 ? ? ? ? JavaScript中的數(shù)組是一種特殊的對(duì)象,用來(lái)表示偏

    2023年04月24日
    瀏覽(32)
  • 數(shù)據(jù)結(jié)構(gòu)與算法-數(shù)組(附阿里面試題)

    ??????? 給你一個(gè)文件里面包含全國(guó)人民(14億)的年齡數(shù)據(jù)(0~180),現(xiàn)在要你統(tǒng)計(jì)每一個(gè)年齡?? 有多少人? ???????? 給定機(jī)器為 單臺(tái)+2CPU+2G內(nèi)存。不得使用現(xiàn)成的容器,比如map等。 (這一句可以忽略) ????????在以上情況下你該如何以最高效的方法來(lái)解決這個(gè)

    2024年02月13日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法】尋找數(shù)組的中心下標(biāo)

    【數(shù)據(jù)結(jié)構(gòu)和算法】尋找數(shù)組的中心下標(biāo)

    Java基礎(chǔ)合集 數(shù)據(jù)結(jié)構(gòu)與算法合集 設(shè)計(jì)模式合集 多線程合集 分布式合集 ES合集 其他系列文章導(dǎo)航 文章目錄 前言 一、題目描述 二、題解 2.1 前綴和的解題模板 2.1.1 最長(zhǎng)遞增子序列長(zhǎng)度 2.1.2 尋找數(shù)組中第 k 大的元素 2.1.3 最長(zhǎng)公共子序列長(zhǎng)度 2.1.4 尋找數(shù)組中第 k 小的元素 2

    2024年02月04日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法】使用數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)鏈表(單向或雙向)

    【數(shù)據(jù)結(jié)構(gòu)和算法】使用數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)鏈表(單向或雙向)

    上文我們通過(guò)結(jié)構(gòu)體的結(jié)構(gòu)實(shí)現(xiàn)了隊(duì)列 、以及循環(huán)隊(duì)列的實(shí)現(xiàn),我們或許在其他老師的教學(xué)中,只學(xué)到了用結(jié)構(gòu)體的形式來(lái)實(shí)現(xiàn)鏈表、隊(duì)列、棧等數(shù)據(jù)結(jié)構(gòu),本文我想告訴你的是,我們 可以使用數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)鏈表、單調(diào)棧、單調(diào)隊(duì)列 目錄 前言 一、用數(shù)組結(jié)構(gòu)的好處 1.數(shù)

    2024年01月20日
    瀏覽(96)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法——TypeScript】數(shù)組、棧、隊(duì)列、鏈表

    【數(shù)據(jù)結(jié)構(gòu)與算法——TypeScript】數(shù)組、棧、隊(duì)列、鏈表

    解決問(wèn)題 的過(guò)程中,不僅僅 數(shù)據(jù)的存儲(chǔ)方式會(huì)影響效率,算法的優(yōu)劣也會(huì)影響效率 什么是算法? 定義: ?? 一個(gè)有限指令集,每條指令的描述不依賴于言語(yǔ) (編寫指令:java/c++/ts/js) ?? 接收一些輸入(有些情況下不需要輸入)(接收:排序:無(wú)序數(shù)組) ?? 產(chǎn)生輸出 (

    2024年02月14日
    瀏覽(45)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包