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

সি++-এ অ্যারেতে পরবর্তী বড় উপাদান (Next Greater Element) বের করা

একটি অ্যারেতে প্রতিটি উপাদানের জন্য তার ডানপাশে থাকা প্রথম বড় উপাদানটি বের করতে হবে। না থাকলে -১।

উদাহরণ

অ্যারে: [1, 2, 3, 4, 5]

আউটপুট:

1 -> 2
2 -> 3
3 -> 4
4 -> 5
5 -> -1

অ্যালগরিদম (স্ট্যাক ব্যবহার)

  • স্ট্যাক ইনিশিয়ালাইজ করুন।
  • প্রথম উপাদান পুশ করুন।
  • প্রতিটি উপাদানের জন্য: স্ট্যাকের টপ চেয়ে বড় হলে পপ করে আউটপুট দিন।
  • বর্তমান উপাদান পুশ করুন।
  • শেষে স্ট্যাকে থাকা সবার জন্য -১।

সি++ ইমপ্লিমেন্টেশন

#include <bits/stdc++.h>
using namespace std;

void nextGreaterElements(int arr[], int n) {
    stack s;
    s.push(arr[0]);
    for (int i = 1; i < n; i++) {
        if (s.empty()) { s.push(arr[i]); continue; }
        while (!s.empty() && s.top() < arr[i]) {
            cout << s.top() << " -> " << arr[i] << endl;
            s.pop();
        }
        s.push(arr[i]);
    }
    while (!s.empty()) {
        cout << s.top() << " -> -1" << endl;
        s.pop();
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = 5;
    nextGreaterElements(arr, n);
    return 0;
}

আউটপুট

1 -> 2
2 -> 3
3 -> 4
4 -> 5
5 -> -1
  1. C++-এ লিংকড লিস্ট পার্টিশন (Partition List)

  2. C++-এ অসুন্দর সংখ্যা (Ugly Number)

  3. C++-এ মেজোরিটি এলিমেন্ট (Majority Element)

  4. সি++-এ লেক্সিকোগ্রাফিকালি পরবর্তী পারমিউটেশন (Lexicographically Next Permutation)