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

C++-এ ম্যাক্সিমাম গ্যাপ (Maximum Gap) সমস্যা

ম্যাক্সিমাম গ্যাপ সমস্যা

একটি আনসর্টেড অ্যারে দেওয়া আছে। সর্ট করা অবস্থায় দুটি egymানуюপস্থিত উপাদানের মধ্যে সর্বোচ্চ পার্থক্য (গ্যাপ) বের করতে হবে। অ্যারেতে ২টির কম উপাদান থাকলে ০ ফেরত দিন।

উদাহরণ: [12,3,9,1,17] → সর্টেড: [1,3,9,12,17] → গ্যাপস: ২, ৬, ৩, ৫ → সর্বোচ্চ: ৬

সমাধানের পদ্ধতি (বাকেট সোর্ট / পিজনহোল প্রিন্সিপল)

  • minVal, maxVal বের করুন
  • ন্যূনতম সম্ভব গ্যাপ: gap = ceil((maxVal - minVal) / (n-1))
  • n-1টি বাকেট তৈরি করুন, প্রতিটি বাকেটে min এবং max রাখুন
  • প্রতিটি সংখ্যা (ছাড়া minVal, maxVal) বাকেটে বিতরণ করুন: idx = (num - minVal) / gap
  • খালি বাকেটগুলো স্কিপ করে সংলগ্ন নন-এম্পটি বাকেটগুলোর মাঝপথের গ্যাপ চেক করুন
  • শেষে maxVal - lastBucketMax ও চেক করুন

সময় জটিলতা: O(n), স্পেস: O(n)

C++ কোড উদাহরণ

[12,3,9,1,17]

আউটপুট

6
  1. C++-এ সর্বোচ্চ সংখ্যা তৈরি করা (Create Maximum Number)

  2. C++-এ স্লাইডিং উইন্ডো ম্যাক্সিমাম (Sliding Window Maximum)

  3. সি++-এ ম্যাক্সিমাম 위ডথ র্যাম্প (Maximum Width Ramp)

  4. C++-এ চতুর্ভুজের সর্বোচ্চ ক্ষেত্রফল