समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो पूर्णांकों की एक सरणी, 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