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

जांचें कि क्या एक कतार को पायथन में एक स्टैक का उपयोग करके दूसरी कतार में क्रमबद्ध किया जा सकता है

मान लीजिए कि हमारे पास पहले n प्राकृतिक संख्याओं (बिना क्रमबद्ध) के साथ एक कतार है। हमें यह जांचना होगा कि दिए गए कतार तत्वों को स्टैक का उपयोग करके किसी अन्य कतार में गैर-घटते क्रम में क्रमबद्ध किया जा सकता है या नहीं। इस समस्या को हल करने के लिए हम निम्नलिखित कार्यों का उपयोग कर सकते हैं -

  • स्टैक से तत्वों को पुश या पॉप करें
  • दी गई कतार से तत्व हटाएं।
  • दूसरी कतार में तत्व डालें।

इसलिए, यदि इनपुट क्यू =[6, 1, 2, 3, 4, 5] जैसा है, तो आउटपुट ट्रू होगा क्योंकि हम क्यू से 6 पॉप कर सकते हैं, फिर इसे स्टैक में धकेल दें। अब सभी शेष तत्वों को क्यू से दूसरी कतार में पॉप करें, फिर स्टैक से 6 पॉप करें और दूसरी कतार में पुश करें, इसलिए नई कतार में सभी तत्वों को गैर-घटते क्रम में क्रमबद्ध किया जाएगा।

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

  • n :=कतार का आकार
  • stk :=एक नया स्टैक
  • exp_val :=1
  • सामने:=शून्य
  • जबकि क्यू खाली नहीं है, करें
    • सामने:=कतार का अगला तत्व
    • क्यू से फ्रंट एलिमेंट हटाएं
    • यदि सामने exp_val के समान है, तो
      • exp_val :=exp_val + 1
    • अन्यथा,
      • यदि stk खाली है, तो
        • आगे को stk में धकेलें
      • अन्यथा जब stk खाली न हो और stk के ऊपर <सामने हो, तो
        • झूठी वापसी
      • अन्यथा,
        • आगे को stk में धकेलें
    • जबकि stk खाली नहीं है और स्टैक का शीर्ष exp_val के समान है, करें
      • stk से पॉप
      • exp_val :=exp_val + 1
  • यदि exp_val - 1 n के समान है और stk खाली है, तो
    • सही लौटें
  • झूठी वापसी

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

उदाहरण

from queue import Queue
def solve(que):
   n = que.qsize()
   stk = []
   exp_val = 1
   front = None
   while (not que.empty()):
      front = que.queue[0]
      que.get()
      if (front == exp_val):
         exp_val += 1
      else:
         if (len(stk) == 0):
            stk.append(front)
         elif (len(stk) != 0 and stk[-1] < front):
            return False
         else:
            stk.append(front)
   while (len(stk) != 0 and stk[-1] == exp_val):
      stk.pop()
      exp_val += 1
   if (exp_val - 1 == n and len(stk) == 0):
      return True
   return False
que = Queue()
items = [6, 1, 2, 3, 4, 5]
for i in items:
   que.put(i)
print(solve(que))

इनपुट

[6, 1, 2, 3, 4, 5]

आउटपुट

True

  1. पायथन का उपयोग करके भविष्यवाणी की जांच के लिए Tensorflow का उपयोग कैसे किया जा सकता है?

    TensorFlow का उपयोग इमेजनेट द्वारा की गई भविष्यवाणियों की कल्पना करके imshow पद्धति का उपयोग करके matplotlib का उपयोग करके भविष्यवाणी की जांच करने के लिए किया जा सकता है। और पढ़ें: TensorFlow क्या है और Keras कैसे तंत्रिका नेटवर्क बनाने के लिए TensorFlow के साथ काम करता है? एक तंत्रिका नेटवर्क जिस

  1. पायथन में स्टैक और क्यू के रूप में सूची का उपयोग करना

    इस लेख में, हम पायथन 3.x में स्टैक और कतार संरचनाओं के बारे में जानेंगे। या जल्दी। यहां हम इन डेटा संरचनाओं के कामकाज और संशोधन पर चर्चा करेंगे - इसमें शामिल हैं - इंसर्शन ऑपरेशन (पुश, एनक्यू) हटाने की कार्रवाई (पॉप, डीक्यू) डिस्प्ले / ट्रैवर्सिंग ऑपरेशन आवश्यकताएं :सूची और सूची संचालन संबंधित

  1. मैं पायथन में एक टुपल को दूसरे टुपल में कैसे जोड़ सकता हूं?

    आप एक + ऑपरेटर का उपयोग करके सीधे टपल को दूसरे टपल में जोड़ सकते हैं। उदाहरण के लिए, उदाहरण x = (1, 2, 3) y = (4, 5) x = x + y print(x) आउटपुट यह आउटपुट देगा x = (1, 2, 3) y = (4, 5) x = x + y