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

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

স্লাইডিং উইন্ডো ম্যাক্সিমাম সমস্যা

একটি অ্যারে nums এবং উইন্ডো সাইজ k দেওয়া আছে। উইন্ডো বাম থেকে ডানে এক এক করে স্লাইড করবে। প্রতিটি উইন্ডোর সর্বোচ্চ মান বের করতে হবে।

উদাহরণ: nums=[1,3,-1,-3,5,3,6,8], k=3
উইন্ডো: [1,3,-1]→3, [3,-1,-3]→3, [-1,-3,5]→5, [-3,5,3]→5, [5,3,6]→6, [3,6,8]→8
ফলাফল: [3,3,5,5,6,8]

সমাধানের পদ্ধতি (ডিক / Deque - মনোটোনিক কিউ)

  • একটি ডবল-এন্ডেড কিউ dq রাখুন যা সূচক স্টোর করবে
  • dq-এর সামনে সবসময় বর্তমান উইন্ডোর সর্বোচ্চ মানের সূচক থাকে
  • নতুন উপাদান i যোগ করার আগে:
    • পিছন থেকে ছোট মানवाले সূচকগুলো পপ করুন (nums[dq.back()] < nums[i])
    • সামন থেকে উইন্ডোর বাইরে যাওয়া সূচকগুলো পপ করুন (dq.front() < i-k+1)
  • i >= k-1 হলে nums[dq.front()] ফলাফলে যোগ করুন

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

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

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

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

  4. উইন্ডোজে C++-এর জন্য সেরা IDE কী? (আলাদা লেখা)