Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาผลรวมสูงสุดของ n สมาชิกติดกันในอาร์เรย์ JavaScript

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ตัวเลขและจำนวน n หาผลรวมสูงสุดของ n สมาชิกที่ติดกันในอาร์เรย์

ใช้เทคนิค Sliding Window เพื่อแก้ในเวลา O(n) และพื้นที่ O(1)

ตัวอย่าง: arr=[2,5,3,4,6], n=2 → ผลรวมสูงสุด = 10 (จาก 6+4)

ตัวอย่างโค้ด

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

ผลลัพธ์

ค่าที่แสดงในคอนโซลจะเป็นดังนี้:

10 12