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

JavaScriptグループ配列-定義されたエッジを使用して移動できる数値のセットを検索します


次の入力配列と出力配列を検討してください-

const input = ["0:3", "1:3", "4:5", "5:6", "6:8"]; const output = [
   [0, 1, 3],
   [4, 5, 6, 8]
];

各数値をグラフのノードと見なし、各ペアx:yをノードxとyの間のエッジと見なすと、定義されたエッジを使用して移動できる数値のセットを見つける必要があります。

つまり、グラフ理論の用語では、そのようなグラフ内の明確な連結成分を見つけます。たとえば、上記の配列では、4から0に移動する方法がないため、それらは異なるグループに属しますが、移動する方法はあります。 1から0まで(3を経由)、同じグループに含まれるようにします。 "目的の出力を繰り返すには、ランダムな入力セットに基づいて、トランスバース可能なノードをグループ化します。

指定された入力から目的の出力を作成するJavaScript関数を作成する必要があります。

const input = ["0:3", "1:3", "4:5", "5:6", "6:8"];
const groupRange = (arr = []) => {
   const res = [[]];
   let count = 0;
   const a = [0];
   let array = arr.map(el => el.split(':').sort((a, b) => a - b)). sort((a, b) => a[0] - b[0]); array.forEach(el => {
      if (el[0] > a[a.length - 1]) {
         res.push(el);
          a.push(el[1]);
         count++;
      } else {
         res[count] = res[count].concat(el);
         a[a.length - 1] = el[1];
      };
   });
   return res.map(el => [...new Set(el)].sort((a, b) => a - b));
}
console.log(groupRange(input));

出力

そして、コンソールの出力は-

になります
[ [ '0', '1', '3' ], [ '4', '5', '6', '8' ] ]

  1. JavaScriptを使用して連続番号を持つ配列内のペアの数

    問題 整数の配列を受け取るJavaScript関数を作成する必要があります。この関数は、連続した番号を持つ配列からそのような伝染性のペアの数を返す必要があります。 例 以下はコードです- const arr = [1, 2, 5, 8, -4, -3, 7, 6, 5]; const countPairs = (arr = []) => {    let count = 0;    for (var i=0; i<arr.length; i+=2){       if(arr[i] - 1 === arr[i

  2. JavaScriptを使用して、配列内に一致する正または負の数がない配列番号を検索する

    問題 整数の配列を受け取るJavaScript関数を作成する必要があります。配列内の各数値について、その負または正の褒め言葉も配列内に存在しますが、正確に1つの数値については、褒め言葉はありません。 この関数は、配列からその数値を見つけて返す必要があります。 例 以下はコードです- const arr = [1, -1, 2, -2, 3]; const findOddNumber = (arr = []) => {    let count = 0;    let number = arr.reduce((total, num) =>