Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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]

  1. 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

  2. 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を挿入します 結果の配列を返す 例 理解を深めるために、次の実装を見て