কম্পিউটার

C++-এ দীর্ঘতম সুরেলা অনুক্রম


ধরুন আমাদের একটি পূর্ণসংখ্যা অ্যারে আছে; আমাদেরকে এর সব সম্ভাব্য পরবর্তীগুলির মধ্যে এর দীর্ঘতম সুরেলা অনুসারীর দৈর্ঘ্য খুঁজে বের করতে হবে। যেমনটি আমরা জানি একটি সুরেলা সিকোয়েন্স অ্যারে হল একটি অ্যারে যেখানে এর সর্বোচ্চ মান এবং এর সর্বনিম্ন মানের মধ্যে পার্থক্য ঠিক 1।

সুতরাং, যদি ইনপুটটি [1,3,2,2,5,2,3,7] এর মত হয়, তাহলে আউটপুট হবে 5, কারণ দীর্ঘতম সুরেলা অনুগামী হল [4,3,3,3,4]।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি মানচিত্র m

    সংজ্ঞায়িত করুন
  • সংখ্যায় n এর জন্য −

    • (1 দ্বারা m[n] বাড়ান)

  • m −

    -এ কী-মানের জোড়া (k,v) এর জন্য
    • এটা :=m

      এ (k+1) এর অবস্থান
    • যদি 'এটি' m হয়, তাহলে −

      • max_:=সর্বোচ্চ এর সর্বোচ্চ_ এবং এর মান

  • সর্বোচ্চ ফেরত দিন__

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int findLHS(vector<int>& nums) {
      unordered_map<int, int> m;
      for (const int n : nums)
         ++m[n];
      int max_{ 0 };
      for (const auto & [ k, v ] : m) {
         auto it = m.find(k + 1);
         if (it != m.end())
            max_ = max(max_, v + it->second);
      }
      return max_;
   }
};
main(){
   Solution ob;
   vector<int> v = {2,4,3,3,6,3,4,8};
   cout << (ob.findLHS(v));
}

ইনপুট

{2,4,3,3,6,3,4,8}

আউটপুট

5

  1. C++ তে দীর্ঘতম ফিবোনাচি অনুসারীর দৈর্ঘ্য

  2. C++ এ প্রদত্ত পার্থক্যের দীর্ঘতম পাটিগণিতিক অনুবর্তন

  3. C++-এ দীর্ঘতম ক্রমবর্ধমান অনুক্রমের সংখ্যা

  4. দীর্ঘতম সাধারণ পরবর্তী সিক্যুয়েন্সের জন্য C++ প্রোগ্রাম