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

JavaScript에서 n 스왑 후 최대 연속 1

<시간/>

문제

바이너리 arr(0 또는 1만 포함하는 배열), arr을 첫 번째 인수로, 숫자 num을 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

배열에 있는 최대 숫자 0을 1로 변경할 수 있으며, 이러한 변경을 수행한 후 함수는 1만 포함하는 가장 긴(인접한) 하위 배열의 길이를 반환해야 합니다.

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

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

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

const output = 6;

출력 설명

두 개의 0을 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