兩個陣列的交集 雙指標 二分

2021-10-05 12:59:16 字數 1219 閱讀 6089

#1、描述

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

示例 1:

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

輸出: [2]

示例 2:

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

輸出: [9,4]

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

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

#2、思路

2、雙指標,兩個陣列排序之後,用兩個指標遊走兩個陣列,走到最後就結束了,

2、二分 將nums2排序,然後查詢nums1的元素,沒寫

#3、note

1、 兩個陣列元素比較大小的次數:max(n1,n3)是最大比較次數,min(n1,n2)是最小比較次數,

而實際的比較次數是在其中之間,

2、 sets;

s.insert(10);

#4、複雜度

雙指標:

時間 排序 o(nlogn)比較 o(m+n)

空間  o(min(m,n))

#5、code

class solution {

public:

vectorintersection(vector& nums1, vector& nums2) {

int n1=nums1.size();

int n2=nums2.size();

//int n=max(n1,n2);

sets;

vectorv;

//if(n1==0||n2==0) return v;  // 不寫也能過

sort(nums1.begin(),nums1.end());

sort(nums2.begin(),nums2.end());

int p1=0;

int p2=0;

while(p1if(nums1[p1]==nums2[p2])  // 相等

s.insert(nums1[p1]);  // set的元素時插入(insert方法)

p1++;

p2++;

else if(nums1[p1]p1++;

else

p2++;

for(auto note:s)  //返回

v.push_back(note);

return v;

兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2,2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 4,9 說明 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現的次數一致。我們可以不考慮輸出結果...

兩個陣列的交集

題目 給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 首先說一下我自己的 菜雞 思路 我先是想先去重第第乙個陣列 nums1 然後迴圈判斷...

兩個陣列的交集

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