첫 번째 인수로 Numbers 배열을 사용하는 JavaScript 함수를 작성해야 합니다. arr이라고 합시다. 함수는 각 쌍의 절대 차이가 num 이하인 가장 긴 하위 배열(연속 또는 비연속)의 길이를 찾아 반환해야 합니다.
예를 들어, 입력 배열과 숫자가 -
인 경우const arr = [7, 9, 8, 6, 6, 3]; const num = 1;
그러면 출력은 다음과 같아야 합니다. -
const output = 3,
원하는 하위 배열이 [7, 6, 6]
이기 때문입니다.예시
이에 대한 코드는 -
const arr = [7, 9, 8, 6, 6, 3]; const maximumSubarray = (arr = [], num = 1) => { if(!arr.length){ return 0; }; const maximum = arr.reduce((acc, val) => Math.max(acc, val)); const buckets = new Array(maximum + 1); buckets.fill(0); const { length } = arr; for(let i=0; i< length; i++){ buckets[arr[i]] += num; }; let max = 0; for(let j=1; j< maximum + 1; j++) { let curr = buckets[j]; let prev = buckets[j - 1]; if(prev != 0 && prev + curr > max) { max = prev + curr; }; }; return max; }; console.log(maximumSubarray(arr));
출력
콘솔의 출력은 -
3