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

सी ++ में लगातार बाद में विभाजित ऐरे

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

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

  • नक्शा m बनाएं और nums की आवृत्ति m में स्टोर करें, nums का आकार m में स्टोर करें
  • सीएनटी:=एन
  • मैं के लिए 0 से n - 1 की सीमा में
    • x :=nums[i]
    • अगर एम[एक्स] और एम[एक्स + 1] और एम[एक्स + 2]
    • m[x], m[x + 1] और m[x + 2] को 1 से घटाएं, x को 3 से बढ़ाएं और गिनती में 3 की कमी करें
    • जबकि m[x]> 0 और m[x]> m[x – 1]
      • cnt को 1 से घटाएं, m[x] को 1 से घटाएं और x को 1 से बढ़ाएं
  • यदि cnt 0 है, तो सही है, अन्यथा गलत है
  • बेहतर समझने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool isPossible(vector<int>& nums) {
      unordered_map <int, int> m;
      int n = nums.size();
      for(int i = 0; i < n; i++){
         m[nums[i]]++;
      }
      int cnt = n;
      for(int i = 0; i < n; i++){
         int x = nums[i];
         if(m[x] && m[x + 1] && m[x + 2]){
            m[x]--;
            m[x + 1]--;
            m[x + 2]--;
            x += 3;
            cnt -= 3;
            while(m[x] > 0 && m[x] > m[x - 1]){
               cnt--;
               m[x]--;
               x++;
            }
         }
      }
      return cnt == 0;
   }
};
main(){
   vector<int> v = {1,2,3,3,4,4,5,5};
   Solution ob;
   cout << (ob.isPossible(v));
}

इनपुट

[1,2,3,3,4,4,5,5]

आउटपुट

1

  1. सी ++ स्ट्रिंग्स की सरणी

    इस खंड में हम देखेंगे कि C++ में स्ट्रिंग्स की एक सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि सी में कोई तार नहीं था। हमें कैरेक्टर ऐरे का उपयोग करके स्ट्रिंग्स बनाना है। इसलिए स्ट्रिंग्स की कुछ सरणी बनाने के लिए, हमें वर्णों की एक 2-आयामी सरणी बनानी होगी। प्रत्येक पंक्तियाँ उस मैट्रिक्स

  1. सी++ में छँटाई

    इस खंड में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिथम कैसे किया जाता है। एक क्रमबद्ध सरणी एक सरणी है जिसमें प्रत्येक तत्व को किसी क्रम में क्रमबद्ध किया जाता है जैसे संख्यात्मक, वर्णानुक्रम आदि। संख्यात्मक सरणी को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे कि बबलसॉर्ट, इंसर्शन सॉर्ट, सेलेक्शन सॉर्ट, मर्ज

  1. सी # में स्ट्रिंग सरणी के तत्वों में स्ट्रिंग को कैसे विभाजित करें?

    वह स्ट्रिंग सेट करें जिसे आप विभाजित करना चाहते हैं। string str = "Hello World!"; स्ट्रिंग को अलग-अलग तत्वों में विभाजित करने के लिए स्प्लिट () विधि का उपयोग करें। string[] res = str.Split(' '); C# में एक स्ट्रिंग को एक स्ट्रिंग सरणी के तत्वों में विभाजित करने के लिए पूरा कोड निम