LeetCode350. 两个数组的交集 II

 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()))

原文地址:https://www.cnblogs.com/xwxz/p/13324001.html