Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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. सी++ में अगला ग्रेटर एलिमेंट II

    मान लें कि हमारे पास एक गोलाकार सरणी है (अंतिम तत्व का अगला तत्व सरणी का पहला तत्व है), हमें प्रत्येक तत्व के लिए अगला ग्रेटर नंबर प्रदर्शित करना होगा। यहां एक संख्या x की अगली बड़ी संख्या, सरणी में इसके ट्रैवर्सिंग-ऑर्डर की पहली बड़ी संख्या है, इसका मतलब है कि हम इसकी अगली बड़ी संख्या को खोजने के ल

  1. सी ++ में न्यूनतम ढेर में अधिकतम तत्व

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

  1. सी ++ में सरणी में प्रत्येक तत्व के लिए निकटतम अधिक मूल्य खोजें

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