Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tổng lớn nhất của n phần tử liên tiếp trong mảng JavaScript


Chúng ta cần viết một hàm JavaScript nhận vào mảng số arr làm đối số thứ nhất và số num làm đối số thứ hai (luôn ≤ độ dài mảng). Hàm nên tìm và trả về tổng lớn nhất của num phần tử liên tiếp trong mảng.

Ví dụ - Nếu đầu vào: arr = [2,5,3,4,6], num = 2. Đầu ra: 10 (vì 6+4=10 lớn nhất).

Có thể giải bằng kỹ thuật cửa sổ trượt (sliding window) với thời gian tuyến tính và không gian hằng số.

Ví dụ

Code sau đây:

const arr = [2, 5, 3, 4, 6]; 
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));

Kết quả

Kết quả trên console:

10 12