Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में सबसे लंबा सामंजस्यपूर्ण बाद


मान लीजिए कि हमारे पास एक पूर्णांक सरणी है; हमें इसके सभी संभावित अनुक्रमों के बीच इसके सबसे लंबे सामंजस्यपूर्ण बाद की लंबाई का पता लगाना होगा। जैसा कि हम जानते हैं कि एक सामंजस्यपूर्ण अनुक्रम सरणी एक सरणी है जहां इसके अधिकतम मूल्य और इसके न्यूनतम मान के बीच का अंतर बिल्कुल 1 है।

इसलिए, यदि इनपुट [1,3,2,2,5,2,3,7] जैसा है, तो आउटपुट 5 होगा, क्योंकि सबसे लंबा सामंजस्यपूर्ण अनुक्रम [4,3,3,3,4] है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक नक्शा परिभाषित करें मी

  • n अंकों के लिए -

    • (m[n] 1 से बढ़ाएं)

  • कुंजी-मान युग्म के लिए (k,v) m में -

    • it :=(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++ में दिए गए अंतर का सबसे लंबा अंकगणितीय क्रम

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी arr और एक पूर्णांक अंतर है, हमें arr में सबसे लंबे बाद की लंबाई का पता लगाना है जो एक अंकगणितीय अनुक्रम है जैसे कि बाद में आसन्न तत्वों के बीच का अंतर अंतर के समान है। तो अगर इनपुट [1,5,7,8,5,3,4,2,1] जैसा है और अंतर -2 है, तो आउटपुट -4 होगा, क्योंकि सबसे लंबा

  1. C++ में सबसे लंबे समय तक बढ़ते क्रम की संख्या

    मान लीजिए कि हमारे पास पूर्णांकों की एक क्रमबद्ध श्रेणी नहीं है। हमें सबसे लंबे समय तक बढ़ते क्रम की संख्या ज्ञात करनी है, इसलिए यदि इनपुट [1, 3, 5, 4, 7] जैसा है, तो आउटपुट 2 होगा, क्योंकि बढ़ते क्रम [1,3,5,7] हैं और [1, 3, 4, 7] इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - n :=संख्या सरणी का

  1. सबसे लंबे समय तक सामान्य बाद के लिए सी ++ कार्यक्रम

    एक अनुक्रम तत्वों के सेट के समान क्रम वाला अनुक्रम है। अनुक्रम स्टुव के लिए, अनुवर्ती स्टु, तुव, एसयूवी, .... आदि हैं। लंबाई n की एक स्ट्रिंग के लिए, स्ट्रिंग से अनुवर्ती बनाने के 2n तरीके हो सकते हैं। उदाहरण एबीसीडीजीएच और एईडीएफएचआर स्ट्रिंग्स के लिए सबसे लंबा सामान्य अनुक्रम लंबाई 3 का है। #inc