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

सी ++ में अतिरिक्त स्टैक का उपयोग किए बिना ओ (1) में स्टैक में अधिकतम खोजें

मान लीजिए कि हम एक स्टैक बनाना चाहते हैं जो स्टैक में अधिकतम तत्व को स्टोर कर सके। और हम इसे O(1) समय में प्राप्त कर सकते हैं। बाधा यह है कि, इसे किसी अतिरिक्त स्थान का उपयोग नहीं करना चाहिए, इसलिए O(1) अतिरिक्त स्थान।

हम एक उपयोगकर्ता-परिभाषित स्टैक बना सकते हैं, जो अधिकतम मूल्य को संग्रहीत करेगा, जब एक ऑपरेशन किया जाता है, जैसे पॉप या पीक, तो अधिकतम वापस कर दिया जाएगा। पीक ऑपरेशन के लिए, पॉप ऑपरेशन के लिए अधिकतम स्टैक टॉप और अधिकतम तत्व लौटाएं, जब शीर्ष तत्व बड़ा हो, तो इसे प्रिंट करें और अधिकतम 2 * अधिकतम - top_element के रूप में अपडेट करें। अन्यथा top_element लौटाएं। पुश ऑपरेशन के लिए अधिकतम तत्व को x (डाटा डाला जाने वाला डेटा), 2*x - अधिकतम के रूप में अपडेट करें।

उदाहरण

#include <iostream>
#include <stack>
using namespace std;
class CustomStack {
   stack<int> stk;
   int stack_max;
   public:
   void getMax() {
      if (stk.empty())
         cout << "Stack is empty"<<endl;
      else
         cout << "Maximum Element in the stack is: "<< stack_max <<endl;
   }
   void peek() {
      if (stk.empty()) {
         cout << "Stack is empty ";
         return;
      }
      int top = stk.top(); // Top element.
      cout << "Top Most Element is: "<<endl;
      (top > stack_max) ? cout << stack_max : cout << top;
   }
   void pop() {
      if (stk.empty()) {
         cout << "Stack is empty"<<endl;
         return;
      }
      cout << "Top Most Element Removed: ";
      int top = stk.top();
      stk.pop();
      if (top > stack_max) {
         cout << stack_max <<endl;
         stack_max = 2 * stack_max - top;
      } else
         cout << top <<endl;
   }
   void push(int element) {
      if (stk.empty()) {
         stack_max = element;
         stk.push(element);
         cout << "Element Inserted: " << element <<endl;
         return;
      }
      if (element > stack_max) {
         stk.push(2 * element - stack_max);
         stack_max = element;
      } else
      stk.push(element);
      cout << "Element Inserted: " << element <<endl;
   }
};
int main() {
   CustomStack stk;
   stk.push(4);
   stk.push(6);
   stk.getMax();
   stk.push(8);
   stk.push(20);
   stk.getMax();
   stk.pop();
   stk.getMax();
   stk.pop();
   stk.peek();
}

आउटपुट

Element Inserted: 4
Element Inserted: 6
Maximum Element in the stack is: 6
Element Inserted: 8
Element Inserted: 20
Maximum Element in the stack is: 20
Top Most Element Removed: 20
Maximum Element in the stack is: 8
Top Most Element Removed: 8
Top Most Element is:
6

  1. C++ में ceil() फ़ंक्शन का उपयोग किए बिना a/b की छत खोजें।

    यहां हम देखेंगे कि ceil() फ़ंक्शन का उपयोग किए बिना a/b की सीलिंग वैल्यू कैसे प्राप्त करें। यदि a =5, b =4, तो (a/b) =5/4। छत(5/4) =2. इसे हल करने के लिए, हम इस सरल सूत्र का पालन कर सकते हैं - $$ceil\lgroup a,b\rgroup=\frac{a+b-1}{b}$$ उदाहरण #include<iostream> using namespace std; int ceilin

  1. सी ++ प्रोग्राम बाइनरी सर्च का उपयोग करके एक ऐरे में अधिकतम तत्व खोजने के लिए

    बाइनरी सर्च ट्री का उपयोग करके किसी सरणी के अधिकतम तत्व को खोजने के लिए यह एक सी ++ प्रोग्राम है। इस कार्यक्रम की समय जटिलता O(log(n)) है। एल्गोरिदम Begin Construct the Binary Search Tree using the given data elements. Next traverse the root pointer to the rightmost child node available. Pr

  1. C++ प्रोग्राम लीनियर सर्च का उपयोग करके किसी ऐरे में न्यूनतम तत्व ढूँढ़ने के लिए

    रैखिक खोज दृष्टिकोण का उपयोग करके सरणी के न्यूनतम तत्व को खोजने के लिए यह एक सी ++ प्रोग्राम है। इस कार्यक्रम की समय जटिलता O(n) है। एल्गोरिदम Begin Assign the data element to an array. Assign the value at ‘0’ index to minimum variable. Compare minimum with other data element se