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

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


मान लीजिए हमारे पास एक पूर्णांक सरणी है जो हिस्टोग्राम की ऊंचाई दर्शाती है। प्रत्येक बार की इकाई चौड़ाई है। हमें निम्नानुसार सबसे बड़े क्षेत्र का आयत ढूंढना है −

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

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

  • स्टैक बनाएं, i := 0, ans := 0 सेट करें

  • जब तक i < heights का आकार, तब

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

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

    • अन्यथा −

      • x := स्टैक शीर्ष तत्व, स्टैक से हटाएं।

      • height := heights[x]

      • temp := height * (i * stack[-1] - 1) जब स्टैक खाली नहीं है अन्यथा temp := height * i

      • ans := ans और temp का अधिकतम

  • जब तक स्टैक खाली नहीं है −

    • x := स्टैक शीर्ष तत्व

    • height := height[x], स्टैक से हटाएं

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

    • ans := ans और temp का अधिकतम

  • ans लौटाएं

उदाहरण

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

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. हिस्टोग्राम के नीचे सबसे बड़े आयत का क्षेत्रफल ज्ञात करने का पायथन प्रोग्राम हिस्टोग्राम के नीचे सबसे बड़े आयत का क्षेत्रफल ज्ञात करने का पायथन प्रोग्राम

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

  1. पायथन में सबसे बड़े त्रिकोण का क्षेत्रफल पायथन में सबसे बड़े त्रिकोण का क्षेत्रफल

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

  1. Python में वर्षा जल संग्रहण Python में वर्षा जल संग्रहण

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