C ++中三个排序数组的交集
假设存在三个整数数组arr1,arr2和arr3,并且它们以严格递增的顺序排序,我们必须返回仅出现在所有这三个数组中的整数的排序数组。因此,如果数组是[1,2,3,4,5],[1,2,5,7,9]和[1,3,4,5,8],那么输出将是[1,5]
为了解决这个问题,我们将遵循以下步骤-
定义一个名为res的数组
创建三个映射f1,f2和f3
对于范围从0到arr1长度的i
f1[arr1[i]]增加1
对于范围从0到arr2长度的i
f2[arr2[i]]增加1
对于范围从0到arr3长度的i
f3[arr3[i]]增加1
对于i=1到2000,
将我插入res数组
如果f1[i]和f2[i]和f3[i],则
返回资源
示例
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
cout << "[";
for(int i = 0; i<v.size(); i++){
cout << v[i] << ", ";
}
cout << "]"<<endl;
}
class Solution {
public:
vector<int> arraysIntersection(vector<int>& arr1, vector<int>& arr2, vector<int>& arr3) {
vector <int> ans;
unordered_map <int,int> f1,f2,f3;
for(int i =0;i<arr1.size();i++){
f1[arr1[i]]++;
}
for(int i =0;i<arr2.size();i++){
f2[arr2[i]]++;
}
for(int i =0;i<arr3.size();i++){
f3[arr3[i]]++;
}
for(int i =1;i<=2000;i++){
if(f1[i] && f2[i] && f3[i])ans.push_back(i);
}
return ans;
}
};
main(){
Solution ob;
vector<int> v1 = {1,2,3,4,5};
vector<int> v2 = {1,2,5,7,9};
vector<int> v3 = {1,3,4,5,8};
print_vector(ob.arraysIntersection(v1, v2, v3));
}输入值
[1,2,3,4,5] [1,2,5,7,9] [1,3,4,5,8]
输出结果
[1,5]
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短