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

JavaScript에서 배열의 n 연속 요소의 최대 합

<시간/>

첫 번째 인수로 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