문제
바이너리 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