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

หาซับอาร์เรย์ที่มีผลรวมสูงสุดใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข อาร์เรย์อาจมีทั้งตัวเลขบวกและลบ

วัตถุประสงค์คือหาซับอาร์เรย์จากอาร์เรย์ (ความยาวเท่าใดก็ได้) ที่องค์ประกอบเมื่อรวมกันให้ผลรวมสูงสุด แล้วคืนค่าผลรวมของซับอาร์เร้วนั้น

เช่น:

ถ้าอาร์เรย์อินพุทคือ:

const arr = [-2,1,-3,4,-1,2,1,-5,4];

ผลลัพธ์ควรเป็น:

const output = 6

เพราะ [4,-1,2,1] มีผลรวมสูงสุดคือ 6

ตัวอย่าง

const arr = [-2,1,-3,4,-1,2,1,-5,4];

const maxSubArray = (arr = []) => {
  let sum = arr[0], max = arr[0];
  for (let i = 1; i < arr.length; ++i){
    sum = Math.max(sum + arr[i], arr[i]), max = Math.max(max, sum);
  };
  return max;
};

console.log(maxSubArray(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

6