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

पायथन में हिस्टोग्राम में सबसे बड़ा आयत


मान लें कि हमारे पास एक पूर्णांक सरणी है जो हिस्टोग्राम की ऊंचाई का प्रतिनिधित्व कर रही है। प्रत्येक बार में इकाई चौड़ाई होती है। हमें इस प्रकार सबसे बड़ा क्षेत्रफल आयत ज्ञात करना है -

पायथन में हिस्टोग्राम में सबसे बड़ा आयत

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

  • स्टैक बनाएं, मैं सेट करें:=0, उत्तर:=0

  • जबकि मैं <ऊंचाई का आकार, तब

    • यदि स्टैक में 0 तत्व या स्टैक शीर्ष तत्व की ऊँचाई <=ऊँचाई [i] है, तो

      • i को स्टैक में डालें, i को 1 से बढ़ाएँ

    • अन्यथा -

      • x:=स्टैक टॉप एलिमेंट, स्टैक से डिलीट करें।

      • ऊँचाई:=ऊँचाई [x]

      • अस्थायी:=ऊंचाई * (i * स्टैक [-1] - 1) जब स्टैक खाली नहीं होता है अन्यथा अस्थायी:=ऊंचाई * i

      • उत्तर:=अधिकतम उत्तर और अस्थायी

  • जबकि स्टैक खाली नहीं है -

    • x :=स्टैक टॉप एलिमेंट

    • ऊँचाई:=ऊँचाई [x], स्टैक से हटाएं

    • अस्थायी:=ऊँचाई * ऊँचाई की लंबाई - स्टैक शीर्ष तत्व - 1 जब स्टैक खाली हो, अन्यथा अस्थायी:=ऊँचाई की लंबाई

    • उत्तर:=अधिकतम उत्तर और अस्थायी

  • वापसी उत्तर

उदाहरण

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

class Solution(object):
   def largestRectangleArea(self, heights):
      stack = []
      i = 0
      ans = 0
      while i < len(heights):
         if len(stack) == 0 or heights[stack[-1]]<=heights[i]:
            stack.append(i)
            i+=1
         else:
            x = stack[-1]
            stack.pop()
            height = heights[x]
            temp = height * (i-stack[-1]-1) if len(stack)!= 0 else height * i
            ans = max(ans,temp)
      while len(stack)>0:
         x = stack[-1]
         height = heights[x]
         stack.pop()
         temp = height * (len(heights)-stack[-1]-1) if len(stack)!= 0 else height* len(heights)
         ans = max(ans,temp)
      return ans
ob = Solution()
print(ob.largestRectangleArea([2,1,5,7,3,2]))

इनपुट

[2,1,5,7,3,2]

आउटपुट

12

  1. पायथन में हिस्टोग्राम के तहत सबसे बड़ा आयत क्षेत्र खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास हिस्टोग्राम में बार की ऊंचाई का प्रतिनिधित्व करने वाली संख्याओं की एक सूची है। हमें सबसे बड़े आयत का क्षेत्रफल ज्ञात करना है जो कि सलाखों के नीचे बन सकता है। इसलिए, यदि इनपुट अंकों की तरह है =[3, 2, 5, 7] तो आउटपुट 10 . होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंग

  1. पायथन में सबसे बड़ा त्रिभुज क्षेत्र

    मान लीजिए कि हमारे पास एक विमान पर बिंदुओं की एक सूची है। हमें सबसे बड़े त्रिभुज का क्षेत्रफल ज्ञात करना है जो कि किसी भी 3 बिंदुओं से बन सकता है। इसलिए, यदि इनपुट [[0,0], [0,1], [1,0], [0,2], [2,0]] जैसा है, तो आउटपुट 2 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - res :=0 N :=अंक सूच

  1. पायथन में वर्षा जल को फंसाना

    मान लीजिए कि हमारे पास n गैर-ऋणात्मक पूर्णांकों की एक सरणी है। ये एक ऊंचाई के नक्शे का प्रतिनिधित्व कर रहे हैं जहां प्रत्येक बार की चौड़ाई 1 है, हमें गणना करनी होगी कि बारिश के बाद यह कितना पानी फंसा सकता है। तो नक्शा इस तरह होगा - यहां हम देख सकते हैं कि 6 नीले बॉक्स हैं, इसलिए आउटपुट 6 होगा। इ