첫 번째 인수로 arr과 같은 숫자 배열을, 두 번째 인수로 num과 같은 숫자를 취하는 JavaScript 함수를 작성해야 합니다.
두 번째 인수는 항상 배열의 길이보다 작거나 같습니다. 우리의 함수는 배열에서 가장 큰 합을 이루는 연속 요소의 개수를 찾아서 반환해야 합니다.
예:
입력이 -
인 경우const arr = [2,5,3,4,6]; const num = 2
위의 입력에 대한 출력은 다음과 같아야 합니다. -
const output = 10
6과 4는 합이 가장 큰 연속적인 두 요소이기 때문입니다.
선형 시간 및 일정 공간 솔루션에서 슬라이딩 윈도우 기법으로 이 문제를 해결할 수 있습니다.
예시
다음은 코드입니다 -
const arr = [2, 5, 3, 4, 6]; // helper function to find sum of an array const findSum = arr => arr.reduce((acc, val) => acc + val); const maximumSum = (arr = [], num = 1) => { let left = 0, right = left + num; let sum = findSum(arr.slice(left, right)); for(; right <= arr.length; right++, left++){ sum = Math.max(findSum(arr.slice(left, right)), sum); }; return sum; }; console.log(maximumSum(arr, 2)); console.log(maximumSum(arr, 3));
출력
다음은 콘솔의 출력입니다 -
10 12