เราต้องเขียนฟังก์ชัน 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