Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 비틀림이 있는 연속적인 것

<시간/>

문제

이진 배열(0과 1로만 구성된 배열) arr을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다. 최대 하나의 0을 뒤집을 수 있는 경우 함수는 이 배열에서 연속 1의 최대 수를 찾아야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
const arr = [1, 0, 1, 1, 0];

그러면 출력은 다음과 같아야 합니다. -

const output = 4;

출력 설명

배열의 인덱스 1에서 0을 뒤집으면 4개의 연속적인 1이 나옵니다.

예시

이에 대한 코드는 -

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

출력

콘솔의 출력은 -

4