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

C++ में डिस्जॉइंट इंटरवल्स में ऐरे पार्टीशन (Partition Array into Disjoint Intervals)


मान लीजिए हमारे पास एक ऐरे A है, हमें इसे दो उपसरणियों left और right में विभाजित करना है जैसे कि:

  • left उपसरणी में प्रत्येक तत्व right उपसरणी के प्रत्येक तत्व से कम या बराबर हो।

  • left और right उपसरणी नॉन-खाली हों।

  • left उपसरणी का सबसे छोटा संभव आकार हो।

ऐसे पार्टीशनिंग के बाद left की लंबाई खोजें। यह गारंटी है कि ऐसा पार्टीशनिंग मौजूद है।

उदाहरण के लिए, यदि इनपुट [5,0,3,8,6] है, तो आउटपुट 3 होगा, क्योंकि left ऐरे [5,0,3] और right उपसरणी [8,6] होगी।

समाधान दृष्टिकोण

  1. n := A का आकार, maxx ऐरे बनाएं

  2. minVal := A का अंतिम तत्व

  3. maxx[0] = A[0], फिर maxx[i] = max(A[i], maxx[i-1])

  4. ans := n-1 से शुरू करें

  5. i = n-1 से 1 तक: minVal अपडेट करें, यदि minVal ≥ maxx[i-1] तो ans = i

  6. ans लौटाएं

C++ कार्यान्वयन

#include <bits/stdc++.h> 
using namespace std; 

class Solution { 
public: 
    int partitionDisjoint(vector<int>& A) { 
        int n = A.size(); 
        vector<int> maxx(n); 
        int minVal = A[n - 1]; 
        maxx[0] = A[0]; 
        for(int i = 1; i < n; i++){ 
            maxx[i] = max(A[i], maxx[i - 1]); 
        } 
        int ans = A.size() - 1; 
        for(int i = n - 1; i >= 1; i--){ 
            minVal = min(minVal, A[i]); 
            if(minVal >= maxx[i - 1]){ 
                ans = i; 
            } 
        } 
        return ans; 
    } 
}; 

int main(){ 
    vector<int> v1 = {5,0,3,8,6}; 
    Solution ob; 
    cout << (ob.partitionDisjoint(v1)); 
    return 0; 
}

इनपुट

[5,0,3,8,6]

आउटपुट

3
  1. - C++ फंक्शन में 2D ऐरे पास करना

    ऐरे को फंक्शन में तर्क के रूप में पास किया जा सकता है। इस प्रोग्राम में, हम इसे फंक्शन में पास करके 2 डायमेंशनल ऐरे के तत्वों को प्रदर्शित करेंगे। एल्गोरिदम Begin 2D ऐरे n[][] को फंक्शन show() में पास किया जाता है। फंक्शन show() को कॉल करें, ऐरे n (n) को नेस्टेड फॉर लूप का उपयोग करके ट्रैवर

  1. - C++ फ़ंक्शन में ऐरे पास करना

    C++ पूरे ऐरे को फ़ंक्शन में आर्गुमेंट के रूप में पास करने की अनुमति नहीं देता। हालांकि, आप ऐरे के नाम को बिना इंडेक्स के निर्दिष्ट करके ऐरे का पॉइंटर पास कर सकते हैं। यदि आप सिंगल-डायमेंशन ऐरे को फ़ंक्शन में आर्गुमेंट के रूप में पास करना चाहते हैं, तो आपको फ़ंक्शन फॉर्मल पैरामीटर को निम्नलिखित तीन

  1. - पायथन में ऐरे को डिसजॉइंट इंटरवल में पार्टीशन करने का प्रोग्राम

    मान लीजिए हमारे पास एक ऐरे nums है, हमें इसे दो अलग-अलग सबएरे left और right में पार्टीशन करना है जैसे कि: left सबएरे में प्रत्येक तत्व right सबएरे में प्रत्येक तत्व से कम या बराबर हो। left और right सबएरे नॉन-खाली हों। left सबएरे का आकार न्यूनतम संभव हो। हमें ऐसी पार्टीशनिंग के बाद left की लंबाई ढ