কম্পিউটার টিউটোরিয়াল

পাইথনে হিস্টোগ্রামে সবচেয়ে বড় আয়ত


ধরুন একটি পূর্ণসংখ্যার অ্যারে আছে যা হিস্টোগ্রামের উচ্চতা প্রতিনিধিত্ব করে। প্রতিটি বারের প্রস্থ ১। আমাদের সবচেয়ে বড় এলাকার আয়ত খুঁজে বের করতে হবে।

পাইথনে হিস্টোগ্রামে সবচেয়ে বড় আয়ত

সমাধানের ধাপগুলো −

  • স্ট্যাক তৈরি করুন, i := 0, ans := 0
  • while i < len(heights) − যদি স্ট্যাক খালি থাকে অথবা heights[stack[-1]] <= heights[i] তবে stack.append(i); i++
  • অন্যথায় − x = stack.pop(); height = heights[x]; temp = height * (i - stack[-1] - 1) যদি স্ট্যাক খালি না হয় অন্যথা height * i; ans = max(ans, temp)
  • স্ট্যাক খালি না হওয়া পর্যন্ত − x = stack.pop(); height = heights[x]; temp = height * (len(heights) - stack[-1] - 1) যদি স্ট্যাক খালি না হয় অন্যথা height * len(heights); ans = max(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. পাইথনে সার্কুলার (পোলার) হিস্টোগ্রাম

  2. পাইথনে হিস্টোগ্রামের নিচে সর্বোচ্চ আয়তাকার এলাকা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে সর্বোচ্চ ত্রিভুজের এলিয়া (Largest Triangle Area) নির্ণয়

  4. পাইথনে রেইন ওয়াটার ট্র্যাপিং