2つの配列の交差JavaScript
Numbersの配列が2つあり、それらの交差を計算して、交差する要素を任意の順序で含む配列を返す関数、たとえばintersection()を作成する必要があります。結果の各要素は、両方の配列に表示される回数だけ表示されるはずです。
例-If、
Input: arr1 = [1,2,3,1], arr2 = [1,3,1] Output: [1,3,1]
アプローチ
配列がソートされていれば、最初はそれぞれの配列の先頭を0に向けて、2つのポインターのアプローチを使用でき、対応するポインターの増加を進めることができ、それはO(m + n)複素数w.r.tでした。ここで、mとnは配列のサイズです。
ただし、並べ替えられていない配列があるため、配列を並べ替えてからこのアプローチを使用するロジックがないため、最初の値を2番目の値と照合して、intersectionarrayを作成します。これにはO(n ^ 2)時間かかります。
そして、これを行うためのコードは-
になります例
const arr1 = [1, 2, 43, 5, 3, 7, 7,8, 4, 2]; const arr2 = [1, 1, 6, 6, 2, 78, 7, 2, 3, 7, 23, 5, 3]; const intersection = (arr1, arr2) => { const res = []; const { length: len1 } = arr1; const { length: len2 } = arr2; const smaller = (len1 < len2 ? arr1 : arr2).slice(); const bigger = (len1 >= len2 ? arr1 : arr2).slice(); for(let i = 0; i < smaller.length; i++){ if(bigger.indexOf(smaller[i]) !== -1){ res.push(smaller[i]); bigger.splice(bigger.indexOf(smaller[i]), 1, undefined); } }; return res; }; console.log(intersection(arr1 ,arr2));
出力
コンソールの出力は-
になります[1, 2, 5, 3, 7, 7, 2]
-
C#での2つの配列の交差
2つの配列の共通部分を取得するには、Intersectメソッドを使用します。これは、System.Linq名前空間からの拡張メソッドです。 このメソッドは、2つの配列間の共通要素を返します。 最初に2つのアレイを設定します- int[] arr1 = { 44, 76, 98, 34 }; int[] arr2 = { 24, 98, 44, 55, 47, 86 }; 次に、両方のアレイでIntersectを使用します- Arr1.Intersect(arr2); 以下は完全なコードです- 例 using System; using System.Linq; class Progr
-
Pythonでの2つの配列IIの交差
2つの配列AとBがあるとすると、これらの配列にはいくつかの要素があります。それらの交差点を見つける必要があります。したがって、A =[1、4、5、3、6]、およびB =[2、3、5、7、9]の場合、交点は[3、5]になります。 これを解決するには、次の手順に従います- 2つのアレイAとBを取ります Aの長さがBの長さよりも短い場合は、それらを交換します 配列内の要素の頻度を計算し、それらをmに格納します Bの各要素eについて、eがmに存在し、頻度がゼロ以外の場合、 頻度m[e]を1つ減らします 結果の配列にeを挿入します 結果の配列を返す 例 理解を深めるために、次の実装を見て