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

ผลรวมสูงสุดของ subarray ใน JavaScript


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

ฟังก์ชันของเราควรเลือกอาร์เรย์ขององค์ประกอบที่อยู่ติดกันจากอาร์เรย์ที่รวมกันมากที่สุด สุดท้าย ฟังก์ชันควรส่งคืนอาร์เรย์นั้น

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

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

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

ผลรวมสูงสุดที่เป็นไปได้คือ 7 และอาร์เรย์ย่อยเอาต์พุตควรเป็น -

const output = [4, -1, -2, 1, 5];

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [-2, -3, 4, -1, -2, 1, 5, -3];
const maximumSubarray = (arr = []) => {
   let max = -Infinity;
   let currentSum = 0;
   let maxStartIndex = 0;
   let maxEndIndex = arr.length - 1;
   let currentStartIndex = 0;
   arr.forEach((currentNumber, currentIndex) => {
      currentSum += currentNumber;
      if (max < currentSum) {
         max = currentSum;
         maxStartIndex = currentStartIndex;
         maxEndIndex = currentIndex;
      }
      if (currentSum < 0) {
         currentSum = 0;
         currentStartIndex = currentIndex + 1;
      }
   });
   return arr.slice(maxStartIndex, maxEndIndex + 1);
};
console.log(maximumSubarray(arr));

ผลลัพธ์

ต่อไปนี้เป็นผลลัพธ์บนคอนโซล -

[ 4, -1, -2, 1, 5 ]