मान लीजिए कि हमारे पास एक पूर्णांक सरणी है जिसे अंक कहा जाता है, हमें एक सरणी (कम से कम एक संख्या वाले) के भीतर सन्निहित उपसरणी को खोजना होगा जिसमें सबसे बड़ा उत्पाद हो। इसलिए यदि सरणी [2,3,-2,4] है, तो आउटपुट 6 होगा, क्योंकि सन्निहित उप-सरणी [2,3] में अधिकतम उत्पाद है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- max_list :=आकार अंकों की सूची, और 0 से भरें
- min_list :=आकार अंकों की सूची, और 0 से भरें
- max_list[0] :=nums[0] and min_list[0] :=nums[0]
- i के लिए 1 से लेकर अंकों की लंबाई तक
- max_list[i] =max_list[i - 1]*nums[i], min_list[i - 1]*nums[i] and nums[i]
- min_list[i] =minof min_list[i - 1]*nums[i], nums[i], max_list[i - 1]*nums[i]
- अधिकतम अधिकतम_सूची लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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([2,3,-2,4,-5,-6,2]))
इनपुट
[2,3,-2,4,-5,-6,2]
आउटपुट
240