আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা পজিটিভ ও নেগেটিভ ইন্টিজারগুলোর একটি অ্যারে নেবে। যেহেতু অ্যারেতে নেগেটিভ এলিমেন্ট আছে, স 거기서 কন্টিগুয়াস এলিমেন্টগুলোর যোগফল নেগেটিভ বা পজিটিভ হতে পারে।
আমাদের ফাংশনটি অ্যারেতে থেকে একটি কন্টিগুয়াস সাবঅ্যারে বেছে নেবে যার যোগফল সর্বোচ্চ। অবশেষে ফাংশনটি সেই সাবঅ্যারেটি রিটার্ন করবে।
উদাহরণস্বরূপ:
যদি ইনপুট অ্যারে হয়:
const arr = [-2, -3, 4, -1, -2, 1, 5, -3];
তাহলে সর্বোচ্চ সম্ভাব্য যোগফল ৭ এবং আউটপুট সাবঅ্যারে হবে:
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 ]