Computer >> Máy Tính >  >> Lập trình >> Javascript

Tối đa 1s liên tiếp sau n lần hoán đổi trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận trong một arr nhị phân (mảng chỉ chứa 0 hoặc 1), arr, làm đối số đầu tiên và một số, num, làm đối số thứ hai.

Chúng ta có thể thay đổi nhiều nhất num 0 có trong mảng thành 1s và hàm của chúng ta sẽ trả về độ dài của mảng con dài nhất (liền kề) chỉ chứa 1s sau khi thực hiện những thay đổi này.

Ví dụ:nếu đầu vào của hàm là -

const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0];
const num = 2;

Sau đó, đầu ra phải là -

const output = 6;

Giải thích đầu ra

Vì sau khi đổi hai số không thành 1, 6 phần tử cuối cùng của mảng sẽ là 1.

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

6