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

C++ में पिछला बड़ा एलिमेंट


इस समस्या में, हमें एक ऐरे दिया गया है। हमारा कार्य ऐरे में वर्तमान एलिमेंट से पहले आने वाले सबसे बड़े एलिमेंट को लौटाना है अन्यथा -1 प्रिंट करना है।

समस्या को समझने के लिए एक उदाहरण लेते हैं

Input: {6, 2, 7, 1, 5, 3} Output: -1, 6, -1, 7, 7, 7

इस समस्या को हल करने के लिए, एक आसान और स्पष्ट समाधान नेस्टेड लूप्स का उपयोग करना होगा जो ऐरे के पूर्ववर्ती भाग में बड़े एलिमेंट की जांच करेंगे।

हमारे समाधान के कार्यान्वयन को दिखाने वाला प्रोग्राम

उदाहरण

#include <iostream> using namespace std; void preceddingGreatestElement(int arr[], int n){    cout << "-1\t";    int i, j;    for (i = 1; i < n; i++) {       for (j = i-1; j >= 0; j--) {          if (arr[i]<arr[j]) {             cout<<arr[j]<< "\t";             break;          }       }       if (j == -1)       cout << "-1\t";    } } int main() {    int arr[] = { 6, 2, 7, 1, 12, 5 };    int n = sizeof(arr) / sizeof(arr[0]);    preceddingGreatestElement(arr, n);    return 0; }

आउटपुट

-1   6   -1   7   -1   12

हमारी समस्या को हल करने का एक अधिक प्रभावी समाधान स्टैक डेटा संरचना का उपयोग करना है। और स्टैक के टॉप पर पूर्ववर्ती बड़ी संख्या को बनाए रखना।

इस समाधान के कार्यान्वयन को दिखाने वाला प्रोग्राम

उदाहरण

#include <bits/stdc++.h> using namespace std; void preceddingGreatestElement(int arr[], int n) {    stack<int> elements;    elements.push(arr[0]);    cout << "-1\t";    for (int i = 1; i < n; i++) {       while (elements.empty() == false && elements.top() < arr[i])       elements.pop();       if(elements.empty())          cout<<"-1\t";       else          cout<<elements.top()<<"\t";       elements.push(arr[i]);    } } int main() {    int arr[] = { 6, 2, 7, 1, 12, 5 };    int n = sizeof(arr) / sizeof(arr[0]);    preceddingGreatestElement(arr, n);    return 0; }

आउटपुट

-1   6   -1   7   -1   12

  1. - C++ में Next Greater Element II

    मान लीजिए हमारे पास एक वृत्ताकार सरणी (circular array) है (सरणी का अंतिम तत्व का अगला तत्व सरणी का पहला तत्व है), हमें हर तत्व के लिए अगली बड़ी संख्या (Next Greater Number) प्रदर्शित करनी है। यहां एक संख्या x की अगली बड़ी संख्या सरणी में उसकी अनुक्रमण क्रम में अगली पहली बड़ी संख्या है, इसका मतलब है

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

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

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

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