given two arrays, write a function to compute their intersection.
example:
given nums1 =[1, 2, 2, 1]
, nums2 =[2, 2]
, return[2]
.
note:
這道題讓我們找兩個陣列交集的部分(不包含重複數字),難度不算大,我們可以用個set把nums1都放進去,然後遍歷nums2的元素,如果在set中存在,說明是交集的部分,加入結果的set中,最後再把結果轉為vector的形式即可:
class solution
return vector(res.begin(), res.end());
}};
我們還可以使用兩個指標來做,先給兩個陣列排序,然後用兩個指標分別指向兩個陣列的開頭,然後比較兩個陣列的大小,把小的數字的指標向後移,如果兩個指標指的數字相等,那麼看結果res是否為空,如果為空或者是最後乙個數字和當前數字不等的話,將該數字加入結果res中,參見**如下:
class solution
++i; ++j;}}
return res;
}};
我們還可以使用二分查詢法來做,思路是將乙個陣列排序,然後遍歷另乙個陣列,把遍歷到的每個數字在排序號的陣列中用二分查詢法搜尋,如果能找到則放入結果set中,這裡我們用到了set的去重複的特性,最後我們將set轉為vector即可:
class solution
}return vector(res.begin(), res.end());
}bool binarysearch(vector&nums, int target)
return false;
}};
求2個集合的交集
文章出處 求2個集合的交集 最簡單 粗暴的迴圈遍歷2個集合,判斷如果有相同的元素就取出來。假設集合1的長度為m,集合2的長度為n,那麼,時間複雜度為 o m n public static list getintersection list list1,listlist2 return list3 ...
求2個集合的交集
求2個集合的交集 最簡單 粗暴的迴圈遍歷2個集合,判斷如果有相同的元素就取出來。假設集合1的長度為m,集合2的長度為n,那麼,時間複雜度為 o m n public static list getintersection list list1,listlist2 return list3 利用has...
求陣列交集
注意 要求提供完整 如果可以編譯執行酌情加分。兩個已排序的整型陣列,求交集,最快演算法 輸入 兩個已排序的整型陣列 int a m b n 輸出 兩個陣列的交集 include include using namespace std 遞迴二分法,返回陣列中與目標值相等或小一號的下表 int sear...