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

JavaScriptで次に大きい要素までの距離を見つける


問題

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

この関数は、対応する各要素が現在の要素よりも次に大きい要素までの距離である入力の新しい配列を作成する必要があります。現在の要素の右側に大きい要素がない場合は、対応する要素に対して0をプッシュする必要があります。 res配列の要素であり、最後にこの配列を返す必要があります。

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

入力

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];

出力

const output = [1, 1, 2, 1, 3, 1, 1, 1, 0, 0];

出力の説明

12の次に大きい要素は13であるため、1ブロック離れています。

次に13を超えるのは、1ブロック離れた14です。

次に14を超えるのは、16、2ブロック先などです。

以下はコードです-

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];
const findNextGreater = (arr = []) => {
   const stack = []
   const res = new Array(arr.length).fill(0)
   for (let i = 0; i < arr.length; i++) {
      while (arr[i] > arr[stack[stack.length - 1]] && stack.length > 0) {
         const index = stack.pop()
         res[index] = i - index
      }
      stack.push(i)
   };
   return res
};
console.log(findNextGreater(arr));

出力

[1, 1, 2, 1, 3, 1, 1, 1, 0, 0]

  1. JavaScriptで各ノードの次に大きいノードを見つける

    問題 リンクリストの先頭を最初で唯一の引数として受け取るJavaScript関数を作成する必要があります。 node_i.val、jは可能な限り最小の選択肢です。そのようなjが存在しない場合、次に大きい値は0です。 この関数は、対応する要素がリスト内の要素の次に大きい要素である配列を準備して返す必要があります。 たとえば、リストが-の場合 その場合、出力は-になります。 const output = [7, 0, 5, 5, 0]; 出力の説明: 2の次に大きい要素は7であるため、7の場合、それ以上の要素はありません。 例 このためのコードは-になります class Nod

  2. C++の次のGreaterElementII

    循環配列があるとすると(最後の要素の次の要素は配列の最初の要素です)、すべての要素の次の大きい数値を表示する必要があります。ここで、数値xの次の大きい数は、配列内の次のトラバース順序の最初の大きい数です。これは、循環して次の大きい数を見つけることができることを意味します。存在しない場合は-1になります。したがって、数値が[1、2、1、3、2、1]の場合、出力は[2,3,3、-1,3,2]になります。 これを解決するには、次の手順に従います- n:=配列のサイズ サイズnのresと呼ばれる1つの配列を定義し、これを-1で埋めて、1つのスタックstを定義します 0〜2nの範囲のiの場合