সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা -১ থেকে ১ পর্যন্ত মান ধারণকারী পূর্ণসংখ্যাগুলোর একটি সিকোয়েন্স অ্যারে নেবে। ফাংশনটি সিকোয়েন্সের সবচেয়ে দীর্ঘ সাব-সেকশনের আকার ফেরত দেবে যেন তার যোগফল শূন্য বা ধনাত্মক হয়।
উদাহরণ
নিচে কোডটি দেওয়া হলো:
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