C++での3つのソートされた配列の交差
3つの整数配列arr1、arr2、およびarr3があり、それらが厳密に昇順で並べ替えられているとすると、これら3つの配列すべてに表示された整数のみの並べ替えられた配列を返す必要があります。 。したがって、配列が[1,2,3,4,5]、[1,2,5,7,9]、および[1,3,4,5,8]の場合、出力は[1,5 ]
これを解決するには、次の手順に従います-
- resという配列を定義する
- 3つのマップ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の場合、
- f1[i]とf2[i]とf3[i]の場合、
- iをres配列に挿入します
- f1[i]とf2[i]とf3[i]の場合、
- return res
理解を深めるために、次の実装を見てみましょう-
#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]
-
JavaScriptでソートされた3つの配列の交差
整数の3つの配列をすべて昇順で並べ替えるJavaScript関数を作成する必要があります。次に、関数は3つの配列すべてに存在する要素のみを含む配列を作成して返す必要があります。 例- 入力配列が-の場合 const arr1 = [4, 7, 8, 11, 13, 15, 17]; const arr2 = [1, 3, 4, 13, 18]; const arr3 = [2, 4, 7, 8, 9, 10, 13]; その場合、出力は-になります。 const output = [4, 13]; 例 このためのコードは-になります const arr1 = [4, 7, 8, 11,
-
C /C++の多次元配列
C / C ++では、多次元配列は簡単な言葉で配列の配列として定義されます。多次元配列では、データは表形式で(行の主要な順序で)格納されます。次の図は、次元が3 x 3x3の多次元配列のメモリ割り当て戦略を示しています。 アルゴリズム Begin Declare dimension of the array. Dynamic allocate 2D array a[][] using new. Fill the array with the elements. Print the ar