Leetcode 349 兩個陣列的交集

2021-10-08 16:52:04 字數 1386 閱讀 9505

給定兩個陣列,編寫乙個函式來計算它們的交集。

示例 1:

輸入:nums1 = [1,2,2,1], nums2 = [2,2]

輸出:[2]

示例 2:

輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]

輸出:[9,4]

說明:

輸出結果中的每個元素一定是唯一的。

我們可以不考慮輸出結果的順序。

思路:直接使用set_intersection函式求交集

set_intersection要求兩個區間必須是有序的(從小到大排列)

函式原始碼

template

<

class

inputiterator1

,class

inputiterator2

,class

outputiterator

>

outputiterator set_intersection

(inputiterator1 first1,inputiterator1 last1,inputiterator2 first2,inputiterator2 last2,outputiterator result)

}return result;

}

class

solution

};

思路2:同樣的根據原始碼,自然而然的就有了雙指標+排序的方法

class

solution

elseif(

*i <

*j)else

} vector<

int>

ans(s.

begin()

, s.

end())

;return ans;}}

;

其他思路:將nums1存入set 然後遍歷nums2,如果能找到能夠擦除的元素,說明找到了交集

這裡還要明確一下 set和unordered_set的區別

set基於紅黑樹實現,紅黑樹具有自動排序的功能,因此map內部所有的資料,在任何時候,都是有序的。

unordered_set基於雜湊表,資料插入和查詢的時間複雜度很低,幾乎是常數時間,而代價是消耗比較多的記憶體,無自動排序功能。底層實現上,使用乙個下標範圍比較大的陣列來儲存元素,形成很多的桶,利用hash函式對key進行對映到不同區域進行儲存。

class

solution

}return ans;}}

;

leetcode349 兩個陣列交集

思想 題目要求給定兩個陣列,編寫乙個函式來計算它們的交集。1.定義變數ans儲存兩個陣列的交集 2.將nums1和nums2去重 3.判斷nums1中的元素num是否在nums2中,若在則新增ans中,不在則繼續for迴圈 class solution object def intersection...

LeetCode349 兩個陣列的交集

給定兩個陣列,寫乙個函式來計算它們的交集。例子 給定num1 1,2,2,1 nums2 2,2 返回 2 題目分析 首先,將num1的元素存進s1,完成了一步去重 同樣,將num2的元素存進s2,也完成了一步去重 將所有的元素存進s.所以s s1 展示 class solution for aut...

Leetcode 349 兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。class solutio...