সমস্যা
জাভাস্ক্রিপ্ট ফাংশন যা ক্রমবর্ধমান ক্রমানুসারে সাজানো পূর্ণসংখ্যার অ্যারে নেয়, অ্যার।
অ্যারেতে ঠিক একটি পূর্ণসংখ্যা রয়েছে যা এক চতুর্থাংশ বার (25%) সময়ের বেশি ঘটে, আমাদের ফাংশনটি সেই সংখ্যাটি ফেরত দেবে।
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
const arr = [3, 5, 5, 7, 7, 7, 7, 8, 9];
তারপর আউটপুট −
হওয়া উচিতconst output = 7;
উদাহরণ
এর জন্য কোড হবে −
const arr = [3, 5, 5, 7, 7, 7, 7, 8, 9];
const oneFourthElement = (arr = []) => {
const len = arr.length / 4;
const search = (left, right, target, direction = 'left') => {
let index = -1
while (left <= right) {
const middle = Math.floor(left + (right - left) / 2);
if(arr[middle] === target){
index = middle;
if(direction === 'left'){
right = middle - 1;
}else{
left = middle + 1;
};
}else if(arr[middle] < target){
left = middle + 1;
}else{
right = middle - 1;
};
};
return index;
};
for(let i = 1; i <= 3; i++){
const index = Math.floor(len * i);
const num = arr[index];
const loIndex = search(0, index, num, 'left');
const hiIndex = search(index, arr.length - 1, num, 'right');
if(hiIndex - loIndex + 1 > len){
return num;
};
};
};
console.log(oneFourthElement(arr)); আউটপুট
এবং কনসোলে আউটপুট হবে −
7