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

C++ में इनपुट के समान क्रम में अगला बड़ा तत्व


अगला बड़ा तत्व वह तत्व है जो उसके बाद पहला बड़ा तत्व है। आइए एक उदाहरण देखते हैं।

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

4 के लिए अगला बड़ा तत्व 5 है और तत्वों 3, 2, 1 के लिए अगला बड़ा तत्व -1 है क्योंकि उनके बाद कोई बड़ा तत्व नहीं है।

एल्गोरिदम

  • सरणी को यादृच्छिक संख्याओं से आरंभ करें।
  • एक स्टैक और एक सरणी आरंभ करें।
  • सरणी के अंत से पुनरावृति करें।
    • स्टैक से तत्वों को तब तक हटाएं जब तक यह खाली न हो जाए और शीर्ष तत्व वर्तमान तत्व से कम या बराबर न हो।
    • यदि स्टैक खाली है, तो कोई अगला बड़ा तत्व नहीं है। इसलिए परिणाम सरणी में -1 जोड़ें।
    • यदि स्टैक खाली नहीं है, तो शीर्ष तत्व वर्तमान तत्व के लिए अगला बड़ा तत्व है। इसे परिणाम सरणी में जोड़ें।
    • वर्तमान तत्व को स्टैक में पुश करें।
  • परिणाम सरणी पर पुनरावृति करें और प्रत्येक तत्व को उसके अगले बड़े तत्व के साथ प्रिंट करें।

कार्यान्वयन

निम्नलिखित C++ में उपरोक्त एल्गोरिदम का कार्यान्वयन है:

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

void nextGreaterElements(int arr[], int n) { 
    stack<int> s; 
    int result[n]; 
    for (int i = n - 1; i >= 0; i--) { 
        while (!s.empty() && s.top() <= arr[i]) { 
            s.pop(); 
        } 
        if (s.empty()) { 
            result[i] = -1; 
        }else { 
            result[i] = s.top(); 
        } 
        s.push(arr[i]); 
    } 
    for (int i = 0; i < n; i++) { 
        cout << arr[i] << " -> " << result[i] << endl; 
    } 
} 

int main() { 
    int arr[] = { 1, 2, 3, 4, 5 }; 
    int n = 5; 
    nextGreaterElements(arr, n); 
    return 0; 
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।

1 -> 2 2 -> 3 3 -> 4 4 -> 5 5 -> -1

  1. - C++ में मिन हीप में अधिकतम तत्व

    समस्या कथन एक मिनिमम हीप दिया गया है, उसमें अधिकतम तत्व ढूंढें। उदाहरण यदि इनपुट हीप है: तो अधिकतम तत्व 55 है। एल्गोरिदम मिनिमम हीप में पैरेंट नोड इसके चाइल्ड्रन से छोटा होगा। इसलिए हम निष्कर्ष निकाल सकते हैं कि एक नॉन-लीफ नोड अधिकतम नहीं हो सकता। लीफ नोड्स में अधिकतम तत्व खोजें। उदाहरण #incl

  1. - C++ में सबसे छोटा सबएरे ढूंढें जिसमें सभी एलिमेंट्स उसी क्रम में हों

    मान लीजिए हमारे पास आकार m और n के दो ऐरे हैं, कार्य पहले ऐरे में न्यूनतम लंबाई का सबएरे ढूंढना है, जिसमें दूसरे ऐरे के सभी एलिमेंट्स हों। दूसरा ऐरे में एलिमेंट्स बड़े ऐरे में नॉन-कंटीग्यूअस लेकिन क्रम समान होना चाहिए। तो यदि दो ऐरे हैं जैसे A = [2, 2, 4, 5, 8, 9], और B = [2, 5, 9], तो आउटपुट 5 होग

  1. - C++ प्रोग्राम: सरणी में प्रत्येक तत्व के लिए निकटतम बड़ा मान ज्ञात करना

    यहां हम देखेंगे कि सरणी में प्रत्येक तत्व के लिए निकटतम बड़ा मान कैसे ज्ञात करें। यदि किसी तत्व x का अगला तत्व जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का बड़ा मान होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लें सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्व [11, 6, 12, 10, -1