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

JavaScriptの循環配列の次の大きい要素


循環アレイ

最後の要素の次の要素が配列の最初の要素である配列は、多くの場合、循環と呼ばれます。

明らかに、このようなデータを保存するメカニズムは存在しません。データは引き続き連続メモリブロックに保存され、循環配列は現実よりもアイデアのようなものです。

問題

最初で唯一の引数として、整数の循環配列arrを受け取るJavaScript関数を作成する必要があります。

次に、関数は、元の配列の対応する要素ごとに次に大きい要素を含む配列を作成して返す必要があります。数値の次の大きい数、たとえばnumは、配列内の次のトラバース順序(この場合は右)の最初の大きい数です。つまり、循環検索して次の大きい数を見つけることができます。それが存在しない場合は、この数値に-1を考慮する必要があります。

たとえば、関数への入力が-

の場合
const arr = [7, 8, 7];

その場合、出力は-

になります。
const output = [8, -1, 8];

出力の説明

配列の両方の7の次に大きいのは8で、配列は円形ですが8の場合、それ以上の要素はないため、-1を指定します。

このためのコードは-

になります
const arr = [7, 8, 7];
const nextGreaterElement = (arr = []) => {
   const res = [];
   const stack = [];
   if (!arr || arr.length < 1){
      return res;
   };
   for (let i = 0; i < arr.length; i++) {
      while (stack.length > 0 && arr[stack[stack.length - 1]] < arr[i]) {
         const small = stack.pop();
         res[small] = arr[i];
      };
      stack.push(i);
   }
   for (let i = 0; i < arr.length; i++) {
      while (stack.length > 0 && arr[stack[stack.length - 1]] < arr[i]) {
         const small = stack.pop();
         res[small] = arr[i];
      };
   }
   const rem = stack.length;
   for (let i = 0; i < rem; i++) {
      res[stack.pop()] = -1;
      }
      return res;
   };
console.log(nextGreaterElement(arr));

コードの説明:

スタック内で1より大きい要素が見つかった場合は、配列を反復処理しながら、res[small]を現在見つかった大きい要素に設定します。

ここでも、arrの最初から始めて、前のforループで次に大きな要素を見つけることができなかった要素を処理します。最後に、それでも、次に大きな要素がなかった要素がいくつかあります。

出力

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

になります
[8, -1, 8]

  1. JavaScript配列の最初の要素と最後の要素?

    配列は要素のグループです。各要素には独自のインデックス値があります 。これらのインデックスを使用して任意の要素にアクセスできます 。ただし、最後の要素の場合、配列に存在する要素の数がわかるまで、インデックスはわかりません。この場合、ロジックを使用する必要があります。これらの詳細について簡単に説明しましょう。 最初の要素へのアクセス 最初の要素のインデックスがわかっているので、その要素の値を非常に簡単に取得できます。配列をarrにします 。その場合、最初の要素の値は arr [0]です。 。 例 次の例では、array1およびarray2という配列があります。 両方の配列は「4」要素で構成され

  2. 配列の最後の要素を出力するJavaScriptコード

    以下は、配列の最後の要素を出力するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>    bod