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

पायथन में जांचने का प्रोग्राम कि क्या हम क्यूब्स को ढेर कर सकते हैं या नहीं


मान लीजिए हमारे पास nums नामक एक सरणी है जिसमें n अलग-अलग क्यूब्स के आकार हैं, वे क्षैतिज रूप से रखे गए हैं। हमें क्यूब्स का एक ऊर्ध्वाधर ढेर बनाना है। नया क्यूब इसका पालन करना चाहिए:

  • यदि ith क्यूब jth क्यूब के ऊपर है, तो jth का साइड लेंथ ith के साइड लेंथ से बड़ा या बराबर होना चाहिए।

जब हम ऊर्ध्वाधर ढेर बना रहे होते हैं, तो हम केवल बाएं या दाएं तरफ से क्यूब्स ले सकते हैं लेकिन बीच से नहीं। हमें जांचना है कि क्या हम उन्हें ढेर कर सकते हैं या नहीं।

उदाहरण के लिए, यदि इनपुट nums = [1,2,3,7,8] है, तो आउटपुट True होगा क्योंकि हम बॉक्स को दाएं से बाएं लेकर सफलतापूर्वक ढेर कर सकते हैं।

समाधान दृष्टिकोण

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

  • n := nums का आकार
  • d := nums के तत्वों से एक डबल एंडेड क्यू बनाएं
  • flag := True
  • prev := 0
  • जब तक d खाली नहीं है, करें
    • first := d[0]
    • last := d[n-1]
    • यदि prev 0 के समान नहीं है और (first > prev या last > prev), तो
      • flag := False
      • लूप से बाहर आएं
    • यदि first >= last, तो
      • prev := d का बायां आइटम, और इसे d से हटाएं
    • अन्यथा,
      • prev := d का अंतिम आइटम और इसे d से हटाएं
  • यदि flag true है, तो
    • True लौटाएं
  • अन्यथा,
    • False लौटाएं

उदाहरण

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

from collections import deque

def solve(nums):
    n = len(nums)
    d = deque(nums)
    flag = True
    prev = 0
    while d:
        first = d[0]
        last = d[-1]
        if prev != 0 and (first > prev or last > prev):
            flag = False
            break
        if first >= last:
            prev = d.popleft()
        else:
            prev = d.pop()
    if flag:
        return True
    else:
        return False

nums = [1,2,3,7,8]
print(solve(nums))

इनपुट

[1,2,3,7,8]

आउटपुट

True
  1. Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम

    मान लीजिए हमारे पास दो ट्री हैं, हमें यह जांचना है कि क्या हम पहले ट्री को दूसरे में किसी भी नोड के बाएं और दाएं सबट्री को कितनी भी बार स्वैप करके बदल सकते हैं। तो, यदि इनपुट इस तरह है तो आउटपुट True होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: que1 := root0 के साथ प्रारंभ एक कतार que2

  1. पायथन में जांचें कि दिया गया ग्राफ द्विभाजित है या नहीं पायथन में जांचें कि दिया गया ग्राफ द्विभाजित है या नहीं

    मान लीजिए हमारे पास एक अविकल्पित ग्राफ है, हमें जांचना है कि ग्राफ द्विभाजित है या नहीं। जैसा कि हम जानते हैं, एक ग्राफ द्विभाजित होता है जब हम ग्राफ के नोड्स को दो सेट A और B में विभाजित कर सकते हैं ताकि ग्राफ में प्रत्येक किनारा {u,v} का एक नोड u A में और दूसरा नोड v B में हो। उदाहरण के लिए, यदि

  1. - सूची खाली है या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण एक खाली सूची दी गई है। हमारा कार्य जांचना है कि यह सूची खाली है या नहीं। यहां हम जांचने का एक निहित तरीका उपयोग करते हैं। एल्गोरिदम हम एक खाली सूची लेते हैं। फिर जांचें कि यदि सूची खाली है तो 1 लौटाएं अन्यथा 0। उदाहरण कोड # खाली सूची की जांच के लिए पायथन कोड def checklist(A): if