বিল্ড আপ
ধরি জাভাস্ক্রিপ্টে নিচের অ্যারেটি আছে –
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
যদি আমরা এই অ্যারের পয়েন্টগুলো y-অক্ষে প্লট করি যেখানে প্রতিটি সংলগ্ন পয়েন্ট x-অক্ষে এক ইউনিট দূরত্বে থাকে, তবে গ্রাফটি হবে নিচের মতো –

এই গ্রাফ স্পষ্টভাবে দেখায় যে এই অ্যারেতে দুটি লোকাল ম্যাক্সিমা (শীর্ষবিন্দু) আছে: সূচক ৩ এবং ৭-এ, মান যথাক্রমে ৭ এবং ৪।
সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি পূর্ণসংখ্যার অ্যারে arr প্রথম ও একমাত্র আর্গুমেন্ট হিসেবে নেবে।
ফাংশনটি একটি অবজেক্ট ফেরত দেবে যাতে দুটি প্রপার্টি থাকবে: maximas এবং positions।
এই দুটি প্রপার্টিও অ্যারে হবে। maximas অ্যারেতে লোকাল ম্যাক্সিমাগুলোর মান থাকবে এবং positions অ্যারেতে তাদের সংশ্লিষ্ট সূচক থাকবে।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
তাহলে উপরের অ্যারেতে আউটপুট হবে –
const output = { maximas: [7, 4], positions: [3, 7] };
উদাহরণ
নিচে কোডটি দেওয়া হল –
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
const findMaxima = (arr = []) => {
let positions = [];
let maximas = [];
for (let i = 1; i < arr.length - 1; i++) {
if (arr[i] > arr[i - 1]) {
if (arr[i] > arr[i + 1]) {
positions.push(i);
maximas.push(arr[i]);
} else if (arr[i] === arr[i + 1]) {
let temp = i;
while (arr[i] === arr[temp]) i++;
if (arr[temp] > arr[i]) {
positions.push(temp);
maximas.push(arr[temp]);
}
}
}
}
return { maximas, positions };
};
console.log(findMaxima(arr));
আউটপুট
তাহলে আউটপুট হবে –
{ maximas: [ 7, 4 ], positions: [ 3, 7 ] }