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

C++ में 132 पैटर्न


मान लीजिए हमारे पास n इंटीजर्स का एक सीक्वेंस a1, a2, ..., an है, एक 132 पैटर्न एक सबसीक्वेंस ai, aj, ak है जैसे कि i < j < k और ai < ak < aj। तो हमें एक एल्गोरिदम डिजाइन करना है जो n नंबर्स की एक लिस्ट को इनपुट के रूप में लेता है और जांचता है कि क्या लिस्ट में 132 पैटर्न है। उदाहरण के लिए, अगर इनपुट है [-1, 3, 2, 0], तो आउटपुट true होगा, क्योंकि तीन पैटर्न हैं [-1, 3, 2], [-1, 3, 0] और [-1, 2, 0]।

इसे हल करने के लिए, हम इन स्टेप्स को फॉलो करेंगे:

  • n := nums का साइज, अगर n 0 है, तो false लौटाएं

  • minVals नाम का एक ऐरे डिफाइन करें जिसका साइज n हो, minVals[0] := nums[0] सेट करें

  • i को 1 से n-1 तक लूप करें:

    • minVals[i] := minVals[i-1] और nums[i] का मिनिमम

  • एक स्टैक st बनाएं

  • i को n-1 से 1 तक डाउनटू लूप करें:

    • minVal := minVals[i-1]

    • curr := nums[i]

    • जब तक st खाली नहीं है और स्टैक का टॉप <= minVal:

      • स्टैक से डिलीट करें

    • अगर st खाली नहीं है और स्टैक का टॉप < curr, तो true लौटाएं

    • nums[i] को st में इंसर्ट करें

  • false लौटाएं

उदाहरण (C++)

बेहतर समझ के लिए निम्न इम्प्लीमेंटेशन देखें:

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

class Solution {
public:
    bool find132pattern(vector<int>& nums) {
        int n = nums.size();
        if(!n) return false;
        vector <int> minVals(n);
        minVals[0] = nums[0];
        for(int i = 1; i < n; i++){
            minVals[i] = min(minVals[i - 1], nums[i]);
        }
        stack <int> s;
        for(int i = n - 1; i > 0; i--){
            int minVal = minVals[i - 1];
            int curr = nums[i];
            while(!s.empty() && s.top() <= minVal) s.pop();
            if(!s.empty() && s.top() < curr) return true;
            s.push(nums[i]);
        }
        return false;
    }
};

int main(){
    vector<int> v = {-1,3,2,0};
    Solution ob;
    cout << (ob.find132pattern(v));
}

इनपुट

[-1,3,2,0]

आउटपुट

1

  1. - C++ में संख्याओं का पैटर्न प्रिंट करने का प्रोग्राम

    इस ट्यूटोरियल में, हम संख्याओं के दिए गए पैटर्न को प्रिंट करने के प्रोग्राम पर चर्चा करेंगे। हमारा कार्य कोड में लूपिंग संरचना का उपयोग करके दिए गए पैटर्न को प्रिंट करना है - 1 232 34543 4567654 567898765 उदाहरण #include using namespace std; int main(){ int n = 5, i, j, num = 1, gap;

  1. C++ में कम्पोजिट डिज़ाइन पैटर्न C++ में कम्पोजिट डिज़ाइन पैटर्न

    कम्पोजिट पैटर्न का उपयोग वहां किया जाता है जहां हमें ऑब्जेक्ट्स के एक समूह को एक सिंगल ऑब्जेक्ट के समान तरीके से ट्रीट करने की आवश्यकता होती है। कम्पोजिट पैटर्न ऑब्जेक्ट्स को ट्री स्ट्रक्चर के रूप में कंपोज करता है ताकि पार्ट और होल हायरार्की दोनों को दर्शाया जा सके। इस प्रकार का डिज़ाइन पैटर्न स्ट्

  1. - C++ सिंगलटन डिज़ाइन पैटर्न समझाया गया

    सिंगलटन डिज़ाइन पैटर्न एक सॉफ्टवेयर डिज़ाइन सिद्धांत है जिसका उपयोग क्लास के इंस्टेंटिएशन को एक ऑब्जेक्ट तक सीमित करने के लिए किया जाता है। यह तब उपयोगी होता है जब सिस्टम भर में कार्यों को समन्वयित करने के लिए ठीक एक ऑब्जेक्ट की आवश्यकता होती है। उदाहरण के लिए, यदि आप एक लॉगर का उपयोग कर रहे हैं जो