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

জাভাস্ক্রিপ্টে সর্টেড অ্যারে থেকে আউট-অফ-অর্ডার এলিমেন্ট খুঁজে বের করা

সমস্যা

একটি সংখ্যা অ্যারে দেওয়া আছে যা আরোহী ক্রমে সর্টেড, কিন্তু শুধু একটি উপাদান আউট-অফ-অর্ডার (খারাপ পজিশনে)। সেটি খুঁজে বের করতে হবে।

উদাহরণ কোড


const arr = [1, 2, 3, 4, 17, 5, 6, 7, 8];

const findWrongNumber = (arr = []) => {
  for (let i = 0; i < arr.length - 1; i++) {
    const el = arr[i];
    if (el - arr[i + 1] < 0 && arr[i + 1] - arr[i + 2] > 0) {
      return arr[i + 1];
    }
  }
};

console.log(findWrongNumber(arr));

আউটপুট

17

ব্যাখ্যা (প্রদত্ত কোড)

  • লুপ প্রতিটি উপাদানের জন্য চেক করে: el < arr[i+1] (নরমাল) এবং arr[i+1] > arr[i+2] (পিক পয়েন্ট)।
  • যদি বর্তমান উপাদান পরবর্তীটি থেকে ছোট হয় (নরমাল) কিন্তু পরবর্তীটি তারপরের থেকে বড় হয়, তবে arr[i+1] ही আউট-অফ-অর্ডার।
  • উদাহরণে: 4 < 17 (OK), কিন্তু 17 > 5 (ব্যাঙ্ক) → ১৭ রিটার্ন।

সীমাবদ্ধতা ও বাগ

  • arr[i+2] অ্যাক্সেস করার সময় বাউন্ড চেক নেই (শেষ ২টি ইনডেক্সের জন্য ইরর দেবে)।
  • শুধু "পিক" (peak) ডিটেক্ট করে, "ভ্যালি" (valley) ডিটেক্ট করে না (যেমন: [1, 5, 3, 4, 5] - এখানে ৩ ভ্যালি)।
  • প্রথম বা শেষ উপাদান যদি ভুল হয়, তবে ডিটেক্ট করবে না।

রোবাস্ট সমাধান (সব এজ কেস হ্যান্ডল)


const findWrongNumberRobust = (arr) => {
  for (let i = 0; i < arr.length - 1; i++) {
    if (arr[i] > arr[i + 1]) {
      // arr[i] বা arr[i+1] যেকোনো একটি ভুল
      // চেক করুন arr[i-1] <= arr[i+1] হলে arr[i] ভুল
      if (i === 0 || arr[i - 1] <= arr[i + 1]) {
        return arr[i];
      }
      // অন্যথায় arr[i+1] ভুল
      return arr[i + 1];
    }
  }
  return null; // কোনো ভুল নেই
};

console.log(findWrongNumberRobust([1, 2, 3, 4, 17, 5, 6, 7, 8])); // 17
console.log(findWrongNumberRobust([1, 5, 3, 4, 5])); // 5 (ভ্যালি কেস)
console.log(findWrongNumberRobust([10, 2, 3, 4, 5])); // 10 (প্রথম উপাদান)
  1. জাভাস্ক্রিপ্টে অ্যারেতে একমাত্র ইউনিক স্ট্রিং খুঁজে বের করা

  2. জাভাস্ক্রিপ্টে অ্যারেতে মিলে যাওয়া পজিটিভ/নেগেটিভ না থাকা সংখ্যা খুঁজে বের করা

  3. জাভাস্ক্রিপ্টে অ্যারে থেকে শুধু বিজোড় সংখ্যা বের করা

  4. জাভাস্ক্রিপ্টে অ্যারেতে ফিবোনাচি সিকোয়েন্স খুঁজে বের করা