Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาอาร์เรย์ย่อยที่มีผลรวมสูงสุดของ JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของ Numbers อาร์เรย์ของตัวเลขสามารถมีทั้งตัวเลขบวกและลบได้

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

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตเป็น −

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