ধরুন আমাদের কাছে n অ-নেতিবাচক পূর্ণসংখ্যার একটি সেট আছে a1, a2, ..., an, প্রতিটি মান স্থানাঙ্কের একটি বিন্দুকে প্রতিনিধিত্ব করে (i, a[i])। n উল্লম্ব রেখাগুলি এমনভাবে উপস্থিত থাকে যে লাইন i-এর দুটি শেষ বিন্দু (i, a[i]) এবং (i, a[0])। আমাদের দুটি লাইন খুঁজে বের করতে হবে, যা এক্স-অক্ষের সাথে একত্রে একটি পাত্র তৈরি করে, তাই আমাদের লক্ষ্য হল দুটি কলাম খুঁজে বের করা যেখানে জলের পরিমাণ সর্বাধিক। সুতরাং যদি অ্যারেটি [1,8,6,2,5,4,8,3,7] এর মত হয়, তাহলে তা হবে
ছায়াযুক্ত অংশে, উচ্চতা 7 এবং এখানে 7টি বিভাগ রয়েছে, তাই মোট ক্ষেত্রফল আসলে 7 * 7 =49৷ এটি হল আউটপুট৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব
- নিম্ন :=0, উচ্চ :=arr এর দৈর্ঘ্য – 1, উত্তর :=0
- যদিও কম <উচ্চ
- যদি arr[low]
- অন্যথায় min_h :=height[high] এবং min_ind :=high
- উত্তর :=সর্বাধিক (উচ্চ - নিম্ন)* মিনিট_ঘণ্টা এবং উত্তর
- যদি কম + 1 =min_ind + 1 হয়, তাহলে 1 দ্বারা কম বাড়ান অন্যথায় 1 দ্বারা কম করুন
- যদি arr[low]
- উত্তর ফেরত দিন
উদাহরণ
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
class Solution(object): def maxArea(self, height): low = 0 high = len(height) - 1 ans = 0 while low < high: if height[low]<height[high]: min_height = height[low] min_height_index = low else: min_height = height[high] min_height_index = high ans = max(((high - low) ) * min_height,ans) if low+1==min_height_index+1: low+=1 else: high-=1 return ans ob1 = Solution() print(ob1.maxArea([1,8,6,2,5,4,8,3,7]))
ইনপুট
[1,8,6,2,5,4,8,3,7]
আউটপুট
49