#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...