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

C++ में सॉर्ट किए गए II बनाने के लिए मैक्स चंक्स

मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है, हमें सरणी को कुछ विभाजनों में विभाजित करना होगा, और प्रत्येक विभाजन को व्यक्तिगत रूप से क्रमबद्ध करना होगा। अब उन्हें संयोजित करने के बाद हमें एक क्रमबद्ध सरणी मिलेगी। हमें अधिकतम संख्या में विभाजन ज्ञात करने होंगे जो हम कर सकते थे?

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

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

  • सीएनटी:=1

  • n :=गिरफ्तारी का आकार

  • एक सरणी को परिभाषित करें maxOfLeft आकार n

  • n आकार के minOfRight की एक सरणी परिभाषित करें

  • maxOfLeft[0] :=arr[0]

  • इनिशियलाइज़ करने के लिए मैं :=1, जब i

    • maxOfLeft[i] :=अधिकतम maxOfLeft[i - 1] और arr[i]

  • minOfRight[n - 1] =arr[n - 1]

  • इनिशियलाइज़ करने के लिए i :=n - 2, जब i>=0, अपडेट करें (i से 1 घटाएं), −

    करें
    • minOfRight[i] :=न्यूनतम minOfRight[i + 1] और arr[i]

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • अगर minOfRight[i + 1]>=maxOfLeft[i], तो −

      • (cnt 1 से बढ़ाएँ)

  • वापसी सीएनटी

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int maxChunksToSorted(vector<int>& arr) {
      int cnt = 1;
      int n = arr.size();
      vector<int> maxOfLeft(n);
      vector<int> minOfRight(n);
      maxOfLeft[0] = arr[0];
      for (int i = 1; i < n; i++)
         maxOfLeft[i] = max(maxOfLeft[i - 1], arr[i]);
         minOfRight[n - 1] = arr[n - 1];
      for (int i = n - 2; i >= 0; i--)
         minOfRight[i] = min(minOfRight[i + 1], arr[i]);
      for (int i = 0; i < n - 1; i++) {
         if (minOfRight[i + 1] >= maxOfLeft[i])
         cnt++;
      }
      return cnt;
   }
};
main(){
   Solution ob;
   vector<int> v = {3,2,4,5,5};
   cout << (ob.maxChunksToSorted(v));
}

इनपुट

{3,2,4,5,5}

आउटपुट

4

  1. सी ++ में एक लाइन पर मैक्स पॉइंट्स

    मान लीजिए कि हमारे पास 2D प्लेन है। हमें एक ही सीधी रेखा पर रहने वाले बिंदुओं की अधिकतम संख्या ज्ञात करनी है। तो अगर अंक इस तरह हैं - फिर 4 अंक होते हैं इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - n :=अंकों की संख्या, यदि n <3 है, तो n लौटाएं उत्तर :=2 मैं के लिए 1 से n - 1 की सीमा

  1. सी ++ प्रोग्राम सॉर्ट किए गए ऐरे को लागू करने के लिए

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

  1. पायथन में क्रमबद्ध सरणी बनाने के लिए अधिकतम भाग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक सरणी संख्या है, हमें सरणी को कुछ विभाजनों में विभाजित करना होगा, और उनमें से प्रत्येक को व्यक्तिगत रूप से क्रमबद्ध करना होगा। अब उन्हें संयोजित करने के बाद हमें एक क्रमबद्ध सरणी मिलेगी। हमें अधिकतम संख्या में विभाजन ज्ञात करने होंगे जो हम कर सकते थे? इसलिए, यदि इनपुट [3,2,