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

Những cái liên tiếp có sự thay đổi trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng nhị phân (một mảng chỉ bao gồm 0 và 1), arr, làm đối số duy nhất. Hàm của chúng ta sẽ tìm số lượng lớn nhất các số 1 liên tiếp trong mảng này nếu chúng ta có thể lật nhiều nhất một 0.

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

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

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

const output = 4;

Giải thích đầu ra

Nếu chúng ta lật số 0 ở chỉ số 1 trong mảng, chúng ta sẽ nhận được 4 số 1 liên tiếp.

Ví dụ

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

const arr = [1, 0, 1, 1, 0];
const findMaximumOne = (nums = []) => {
   let count = 0;
   let first = -1;
   let i =0, j = 0;
   let res = -Infinity;
   while(j < nums.length){
      if(nums[j] === 1){
         res = Math.max(res, j-i+1);
      }else{
         count++;
         if(count==2){
            i = first + 1;
            count--;
         };
         first = j;
      };
      j++;
   };
   return res;
};
console.log(findMaximumOne(arr));

Đầu ra

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

4