মান ল করুন nums নামের একটি অ্যারে, আমাদের এমন একটি সংলগ্ন সাবঅ্যারের (কমপক্ষে একটি সংখ্যা থাকবে) গুণফল খুঁজে বের করতে হবে যেটির গুণফল সর্বোচ্চ। যেমন অ্যারে [1,9,2,0,2,5] হলে, আউটপুট হবে ১৮, কারণ সংলগ্ন সাবঅ্যারে [1,9,2]-র গুণফল সর্বোচ্চ।
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:
- max_list := nums আকারের একটি তালিকা, ০ দিয়ে ভরা
- min_list := nums আকারের একটি তালিকা, ০ দিয়ে ভরা
- max_list[0] = nums[0], min_list[0] = nums[0]
- i কে ১ থেকে nums-এর দৈর্ঘ্য পর্যন্ত লুপ চালান:
- max_list[i] = max(max_list[i-1]*nums[i], min_list[i-1]*nums[i], nums[i])
- min_list[i] = min(min_list[i-1]*nums[i], nums[i], max_list[i-1]*nums[i])
- max_list-এর সর্বোচ্চ মান ফেরত দিন।
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:
উদাহরণ
class Solution(object): def maxProduct(self, nums): max_list = [0] * len(nums) min_list = [0] * len(nums) max_list[0] = nums[0] min_list[0] = nums[0] for i in range(1,len(nums)): max_list[i] = max(max(max_list[i-1]*nums[i],min_list[i-1]*nums[i]),nums[i]) min_list[i] = min(min(min_list[i-1]*nums[i],nums[i]),max_list[i-1]*nums[i]) return max(max_list) ob1 = Solution() print(ob1.maxProduct([1,9,2,0,2,5]))
ইনপুট
[1,9,2,0,2,5]
আউটপুট
18