1 /** 2 * 3 给定两个数组,编写一个函数来计算它们的交集。 4 示例 1: 5 6 输入:nums1 = [1,2,2,1], nums2 = [2,2] 7 输出:[2,2] 8 示例 2: 9 10 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 11 输出:[4,9] 12 13 来源:力扣(LeetCode) 14 链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii 15 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 16 */ 17 18 #include<vector> 19 #include <set> 20 #include <iostream> 21 22 using namespace std; 23 24 class Solution { 25 public: 26 vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { 27 sort(nums1.begin(), nums1.end()); 28 sort(nums2.begin(), nums2.end()); 29 vector<int> result; 30 // set_intersection 用于求两个集合的交集,两个区间必须是有序的,所以上面排了下序 31 // back_inserter用于在末尾添加元素,将集合从末尾添加到result中 32 set_intersection(nums1.begin(), nums1.end(), nums2.begin(), nums2.end(), back_inserter(result)); 33 return result; 34 } 35 }; 36 37 int main(){ 38 Solution s; 39 vector<int> vec1,vec2,vec3; 40 vec1 = { 4,9,5 }; 41 vec2 = { 9,4,9,8,4 }; 42 vec3 = s.intersect(vec1,vec2); 43 vector<int>::iterator it; 44 for (it = vec3.begin(); it !=vec3.end() ; it++) { 45 cout<<*it<<endl; 46 } 47 return 0; 48 }
总结:
//在使用之前必须对两个集合先排序
//总结 set_intersection()求交集/ set_union()求并集/ set_difference()求差集
//形式:set_intersection(nums1.begin(), nums1.end(), nums2.begin(), nums2.end(), inserter(res, res.begin()))