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

JavaScriptで正確に3つの一意の繰り返し要素の配列を並べ替える


次のように、正確に3つの要素-1、0、および1の任意の頻度を含む数値の配列があるとします-

const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];

そのような配列を1つ取り込むJavaScript関数を作成する必要があります。関数は、この特別な配列をその場で並べ替えるだけです。つまり、値を格納するために余分な配列を使用する必要はありません。

唯一の条件は、関数が線形時間関数である必要があることです(1回の反復のみを使用)。

以下はコードです-

const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];
const sortSpecialArray = (arr = []) => {
   const swap = (a, b) => {
      let middle = arr[a]
      arr[a] = arr[b]
      arr[b] = middle
   };
   let left = 0;
   let middle = 0;
   let right = arr.length-1;
   while(middle <= right){
      if(arr[middle] === -1){
         swap(left++, middle++);
      }else if(arr[middle] === 0){
         middle++;
      }else if(arr[middle] === 1){
         swap(right--, middle);
      }
   };
};
sortSpecialArray(arr);
console.log(arr);

出力

以下はコンソール出力です-

[
   -1, -1, 0, 0, 0,
   0, 1, 1, 1, 1,
   1
]

  1. JavaScriptで配列の要素を再配置する

    問題 最初で唯一の引数として、数値の配列arrを受け取るJavaScript関数を作成する必要があります。 配列arrは、常に偶数の長さになります。 0 <=i

  2. JavaScriptの要素の頻度の増加に基づいて配列を並べ替える

    問題 最初で唯一の引数として、数値の配列arrを受け取るJavaScript関数を作成する必要があります。 配列arrには、いくつかの重複が含まれている可能性があります。この関数は、出現回数が最も少ない要素が最初に配置され、次に頻度が高くなる要素が配置されるように配列を並べ替えることを想定しています。 2つの要素が配列に同じ回数出現する場合は、昇順で配置する必要があります。 たとえば、関数への入力が 入力 const arr = [5, 4, 5, 4, 2, 1, 12]; 出力 const output = [1, 2, 12, 4, 4, 5, 5]; 出力の説明