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

C++ কোড: দিয়ে गये অ্যারেতে লোকাল এক্স্ট্রিমা গণনা


মান লক্ষ্য করুন একটি n এলিমেন্টের অ্যারে A। এই অ্যারেতে কিছু এলিমেন্ট A[i]কে লোকাল মিনিমাম বলা হবে যদি এবং কেবল যদি সেটি তার দুটি প্রতিবেশীর চেয়ে স্ট্রিক্টলি কম হয়। আর যদি সেটি তার প্রতিবেশীদের চেয়ে স্ট্রিক্টলি বেশি হয় তবে সেটি লোকাল ম্যাক্সিমাম। A[0] এবং A[n-1]-এর জন্য যেহেতু শুধু এক প্রতিবেশী আছে তাই সেগুলো ম্যাক্সিমা বা মিনিমা নয়। আমাদের দিয়ে गये অ্যারেতে লোকাল এক্স্ট্রিমার সংখ্যা বের করতে হবে।

তাই, যদি ইনপুট হয় A = [1, 5, 2, 5], তবে আউটপুট হবে ২, কারণ A[1]-এ ৫ লোকাল ম্যাক্সিমা এবং A[2]-এ ২ লোকাল মিনিমা।

ধাপসমূহ

এটি সমাধান করার জন্য, আমরা এই ধাপগুলো অনুসরণ করব −

sum := 0
n := size of A
for initialize i := 1, when i < n - 1, update (increase i by 1), do:
    if (A[i] < A[i - 1] and A[i] < A[i + 1]) or (A[i] > A[i + 1] and A[i] > A[i - 1]), then:
        (increase sum by 1)
return sum

উদাহরণ

বेहतर বোঝার জন্য ইমপ্লিমেন্টেশন দেখি −

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
    int sum = 0;
    int n = A.size();
    for (int i = 1; i < n - 1; i++)
        if ((A[i] < A[i - 1] && A[i] < A[i + 1]) || (A[i] > A[i + 1] && A[i] > A[i - 1]))
            sum++;
    return sum;
}
int main(){
    vector<int> A = { 1, 5, 2, 5 };
    cout << solve(A) << endl;
}

ইনপুট

{ 1, 5, 2, 5 }

আউটপুট

2

  1. C++-এ অ্যারেতে দুটি দেওয়া উপাদানের মধ্যস্থ উপাদান গণনা

  2. C++-এ অ্যারেতে স্বতন্ত্র উপাদান গণনা

  3. C++-এ নির্দিষ্ট রেঞ্জে ফ্যাক্টোরিয়াল সংখ্যা গণনা

  4. C++-এ সর্টেড বাইনারি অ্যারেতে ১-এর সংখ্যা গণনা (Count 1's in Sorted Binary Array)