Computer >> Máy Tính >  >> Lập trình >> Javascript

Tổng tối đa của n phần tử liên tiếp của mảng trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số, chẳng hạn arr, làm đối số đầu tiên và một số, chẳng hạn như num, làm đối số thứ hai.

Đối số thứ hai sẽ luôn nhỏ hơn hoặc chỉ bằng độ dài của mảng. Hàm của chúng ta sẽ tìm và trả về số phần tử liên tiếp từ mảng có tổng giá trị lớn nhất.

Ví dụ -

Nếu đầu vào là -

const arr = [2,5,3,4,6];
const num = 2

Đầu ra cho đầu vào ở trên sẽ giống như thế này -

const output = 10

bởi vì 6 và 4 là hai phần tử liên tiếp có tổng lớn nhất.

Chúng ta có thể giải quyết vấn đề này với kỹ thuật cửa sổ trượt trong một giải pháp thời gian tuyến tính và không gian không đổi.

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

10
12