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

JavaScriptで回転するソートされた配列で最小の要素を見つける


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

配列は最初にソートされ、次に任意の数の要素によって回転されます。関数は、配列内の最小の要素を見つけて、その要素を返す必要があります。

唯一の条件は、線形時間計算量未満でこれを実行する必要があることです。おそらく、バイナリ検索アルゴリズムの多少調整されたバージョンを使用します。

例-

入力配列が-

の場合
const arr = [6, 8, 12, 25, 2, 4, 5];

その場合、出力は2になります。

以下はコードです-

const arr = [6, 8, 12, 25, 2, 4, 5];
const findMin = (arr = []) => {
   let temp;
   let min = 0;
   let max = arr.length - 1;
   let currentMin = Number.POSITIVE_INFINITY;
   while (min <= max) {
      temp = (min + max) >> 1;
      currentMin = Math.min(currentMin, arr[temp]);
      if (arr[min] < arr[temp] && arr[temp] <= arr[max] || arr[min] > arr[temp]) {
         max = temp - 1;
      } else if (arr[temp] === arr[min] && arr[min] === arr[max]) {
         let guessNum = arr[temp];
         while (min <= max && arr[min] === guessNum) {
            min++;
         }
      } else {
         min = temp + 1;
      }
   }
   return currentMin;
};
console.log(findMin(arr));

出力

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

2

  1. JavaScriptで配列内の最初の連続していない番号を見つける

    問題 数値の配列を受け取るJavaScript関数を作成する必要があります。関数は、前の要素の自然な後継ではない配列から最初の要素を返す必要があります。 これは、配列にそのような要素が少なくとも1つ存在する場合、前の要素の+1ではない要素を返す必要があることを意味します。 例 以下はコードです- const arr = [1, 2, 3, 4, 6, 7, 8]; const findFirstNonConsecutive = (arr = []) => {    for(let i = 0; i < arr.length - 1; i++){  

  2. C++でソートおよび回転された配列の最大要素

    説明 未知のポイントで回転する個別の要素のソートされた配列が与えられた場合、タスクはその中の最大の要素を見つけることです。 例 入力配列が{30、40、50、10、20}の場合、最大要素は50です。 アルゴリズム 最大要素は、次の要素がそれよりも小さい唯一の要素です。次に小さい要素がない場合、回転はありません。つまり、最後の要素が最大です 中間要素のこの条件を、mid –1およびmid+ 1の要素と比較して確認します。最大要素がmid–1およびmid+ 1の要素である場合、最大要素が中央にない場合(midでもmidでもない場合) mid + 1)の場合、maximumelementは左半