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

C++ . में ऑनलाइन स्टॉक स्पैन

मान लीजिए कि हमारे पास एक एपीआई है, जो कुछ स्टॉक के लिए दैनिक मूल्य उद्धरण एकत्र करता है, और वर्तमान दिन के लिए उस स्टॉक की कीमत की अवधि लौटाता है। यहां आज स्टॉक की कीमत की अवधि को -

. के रूप में परिभाषित किया गया है
  • लगातार दिनों की अधिकतम संख्या (आज से शुरू होकर पीछे की ओर जाना) जहां स्टॉक की कीमत आज की कीमत से कम या उसके बराबर थी।

उदाहरण के लिए, यदि हम [100, 80, 60, 70, 60, 75, 85] जैसे 7 दिनों के स्टॉक शेयर रिकॉर्ड देखते हैं, तो स्टॉक अवधि [1, 1, 1, 2, 1, 4, 6] होगी। हमें उस एपीआई के लिए वास्तविक मॉड्यूल लिखना होगा, जिसका उपयोग तब किया जाएगा जब इस मॉड्यूल को कॉल किया जाएगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • सेंट, वी और काउंटर दो सरणियों को परिभाषित करें, काउंटर को 0 के रूप में सेट करें
  • काउंटर को 1 से बढ़ाएं
  • जबकि सेंट खाली नहीं है और कीमत>=v[स्टैक टॉप एलिमेंट]
    • स्टैक से पॉप।
  • उत्तर:=काउंटर जब स्टैक खाली हो, अन्यथा उत्तर :=काउंटर – स्टैक टॉप
  • वी में मूल्य डालें
  • सेंट में काउंटर डालें
  • वापसी उत्तर

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class StockSpanner {
   public:
   vector <int> st;
   int counter;
   vector <int> v;
   StockSpanner() {
      counter = 0;
   }
   int next(int price) {
      counter++;
      while(!st.empty() && price >= v[st.back() - 1])st.pop_back();
      int ans = st.empty() ? counter : counter - st.back();
      v.push_back(price);
      st.push_back(counter);
      return ans ;
   }
};
main(){
   StockSpanner ob;
   cout <<(ob.next(100)) << endl;
   cout <<(ob.next(80)) << endl;
   cout <<(ob.next(60)) << endl;
   cout <<(ob.next(70)) << endl;
   cout <<(ob.next(60)) << endl;
   cout <<(ob.next(75)) << endl;
   cout <<(ob.next(85)) << endl;
}

इनपुट

Initialize the class, then call next() method using different values. See the main() method

आउटपुट

1
1
1
2
1
4
6

  1. Linux पर C++ का सबसे अच्छा IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। Linux पर C++ के लिए एक भी सर्वश्रेष्ठ IDE नही

  1. Linux पर c++ के लिए शीर्ष IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। यहाँ Linux के लिए सर्वश्रेष्ठ C/C++ IDE की सू

  1. विंडो पर c++ के लिए शीर्ष IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। यहां विंडो के लिए सर्वश्रेष्ठ C/C++ IDE की सू