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

ค้นหาลำดับผลรวมที่ไม่เป็นลบที่ยาวที่สุดโดยใช้ JavaScript


ปัญหา

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

ฟังก์ชันของเราควรคืนค่าขนาดของส่วนย่อยที่ยาวที่สุดของลำดับนั้นด้วยผลรวมของศูนย์หรือสูงกว่า

ตัวอย่าง

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

const arr = [-1, -1, 0, 1, 1, -1, -1, -1];
const longestPositiveSum = (arr = []) => {
   let sum = 0;
   let maxslice = 0;
   let length = arr.length;
   const sumindex = [];
   let marker = length * 2 + 1;
   for(let i = 0; i < length * 2; i++){
      sumindex[i] = marker;
   }
   for(let i = 0; i < arr.length; i++){
      sum += arr[i];
      if (sum >= 0)
         maxslice = i + 1;
      else if (sumindex[sum+length] != marker)
         maxslice = Math.max(maxslice, i - sumindex[sum+length]);
      else
         sumindex[sum+length] = i;
   };
   return maxslice;
};
console.log(longestPositiveSum(arr));

ผลลัพธ์

5