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