কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে স্পেশাল অ্যারে চেক করা


সমস্যা বিবরণ

একটি অ্যারে "স্পেশাল" যদি একটি পজেটিভ ইন্টিজার num থাকে যাতে অ্যারেতে num এর চেয়ে বড় num টি এলিমেন্ট থাকে। num অ্যারেতে থাকতে হয় না।

ইনপুট: [2, 1, 5, 2, 7, 9]

num = 3 হলে: ৩টির চেয়ে বড় এলিমেন্ট আছে ৫, ৭, ৯ (৩টি) → স্পেশাল, রিটার্ন ৩।

সমাধান

const arr = [2, 1, 5, 2, 7, 9];

const findSpecialArray = (array = []) => {
  const arr = array.slice().sort((a, b) => a - b);
  let index = 1;
  const { length } = arr;
  while (index <= arr[length - 1]) {
    let num = 0;
    for (let i = 0; i < length; i++) {
      if (arr[i] >= index) num++;
    }
    if (num === index) return index;
    index++;
  }
  return -1;
};

console.log(findSpecialArray(arr)); // 3

আউটপুট

3

অপ্টিমাইজড পদ্ধতি

সর্টেড অ্যারেতে বাইনারি সার্চ বা সিম্পল লজিক: arr[n - num] > num && arr[n - num - 1] <= num চেক করে O(n log n) বা O(n) তে করা যায়।

  1. জাভাস্ক্রিপ্ট Array shift() মেথড

  2. জাভাস্ক্রিপ্ট Array reverse() মেথড

  3. জাভাস্ক্রিপ্ট JSON অ্যারে

  4. জাভাস্ক্রিপ্টে অ্যারে ডিস্ট্রাকচারিং