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

JavaScriptでn回スワップした後の最大連続1


問題

バイナリarr(0または1のみを含む配列)、最初の引数としてarr、2番目の引数として数値numを受け取るJavaScript関数を作成する必要があります。

配列に存在する最大数の0を1に変更できます。関数は、これらの変更を行った後、1のみを含む最長の(連続した)サブ配列の長さを返す必要があります。

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

の場合
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0];
const num = 2;

その場合、出力は-

になります。
const output = 6;

出力の説明

2つのゼロを1に変更した後、配列の最後の6つの要素は1になるためです。

このためのコードは-

になります
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0];
const num = 2;
const longestOnes = (arr = [], num = 1) => {
   let max = 0;
   let left = 0;
   let curr = num;
   for(let right = 0; right < arr.length; right++){
      if(arr[right] === 0){
         curr -= 1;
      };
      while(curr < 0){
         if(arr[left] === 0){
            curr += 1;
         };
         left += 1;
      };
      max = Math.max(max, right - left + 1);
   };
   return max;
};
console.log(longestOnes(arr, num));

出力

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

になります
6

  1. JavaScriptで対応する数字の後に小さい数字を数える

    問題 最初で唯一の引数として数値の配列を受け取るJavaScript関数を作成する必要があります。 この関数は、入力配列に基づいて新しい配列を準備する必要があります。また、この新しい配列の対応する各要素は、元の配列の対応する要素よりも小さい要素の数である必要があります。 たとえば、関数への入力が-の場合 const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9]; その場合、出力は-になります。 const output = [2, 4, 0, 1, 2, 1, 0, 0, 0]; 出力の説明: 右側の4より小さい数は2(1と3)であるため、7の場合は4(1、4、

  2. JavaScriptで最長の連続結合を検索する

    問題 最初で唯一の引数として、数値のペアarrの配列を受け取るJavaScript関数を作成する必要があります。すべてのペアで、最初の数字は常に2番目の数字よりも小さくなります。 ここで、b