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

posted @   小尾学长  阅读(246)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示