সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি পূর্ণসংখ্যার অ্যারে arr প্রথম ও একমাত্র আর্গুমেন্ট হিসেবে নেবে।
আমরা এই অ্যারে arr-কে একটি সার্কুলার অ্যারে ধরে নিতে পারি, অর্থাৎ অ্যারের শেষ উপাদান প্রথম উপাদানের পরে আসবে। ফাংশনটি arr-এর নন-ইম্পটি সাবঅ্যারের সর্বোচ্চ সম্ভাব্য যোগফল খুঁজে বের করে ফেরত দেবে।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
ইনপুট
const arr = [2, -2, 3, -1];
আউটপুট
const output = 4;
আউটপুট ব্যাখ্যা
কারণ 아직도 সাবঅ্যারে হল [3, -1, 2]
উদাহরণ
নিচে কোডটি দেওয়া হল –
const arr = [2, -2, 3, -1];
const maxSubarraySumCircular = (arr = []) => {
let max = arr[0];
let min = arr[0];
let currentMax = max;
let currentMin = min;
let sum = arr[0];
for (let i = 1; i < arr.length; i++) {
currentMax = arr[i] + Math.max(currentMax, 0);
max = Math.max(max, currentMax);
currentMin = arr[i] + Math.min(currentMin, 0);
min = Math.min(min, currentMin);
sum += arr[i];
}
return max < 0 ? max : Math.max(max, sum - min);
};
console.log(maxSubarraySumCircular(arr));
আউটপুট
4