আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে একটি সংখ্যার অ্যারে (arr) এবং দ্বিতীয় আর্গুমেন্ট হিসেবে একটি সংখ্যা (num) গ্রহণ করবে। ফাংশনটি সাবঅ্যারে (লিগত বা অলিগত) বের করবে যাতে প্রতিটি জোড়ার পরম পার্থক্য (absolute difference) num এর চেয়ে ছোট বা সমান হয়। এবং সাবঅ্যারেটির দৈর্ঘ্য রিটার্ন করবে।
উদাহরণস্বরূপ, ইনপুট অ্যারে এবং সংখ্যা যদি হয় —
const arr = [7, 9, 8, 6, 6, 3]; const num = 1;
তাহলে আউটপুট হবে —
const output = 3,
কারণ চাওয়া সাবঅ্যারে হলো [7, 6, 6]
উদাহরণ
কোডটি নিচে দেওয়া হলো —
const arr = [7, 9, 8, 6, 6, 3];
const maximumSubarray = (arr = [], num = 1) => {
if(!arr.length){
return 0;
};
const maximum = arr.reduce((acc, val) => Math.max(acc, val));
const buckets = new Array(maximum + 1);
buckets.fill(0);
const { length } = arr;
for(let i=0; i< length; i++){
buckets[arr[i]] += num;
};
let max = 0;
for(let j=1; j< maximum + 1; j++) {
let curr = buckets[j];
let prev = buckets[j - 1];
if(prev != 0 && prev + curr > max) {
max = prev + curr;
};
};
return max;
};
console.log(maximumSubarray(arr));
আউটপুট
কনসোল আউটপুট:
3