मान लीजिए कि हमारे पास अंक नामक एक सरणी है और इसमें सकारात्मक और नकारात्मक संख्याएं हैं। हमारे पास एक और मूल्य k है। हमें यह जांचना होगा कि क्या कोई उप-सरणी जिसका गुणनफल k है, सरणी में मौजूद है या नहीं।
इसलिए, यदि इनपुट nums =[-2,-1,1,3,5,8], k =6 जैसा है, तो आउटपुट ट्रू होगा क्योंकि सबएरे [-2,-1,3]है। पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- न्यूनतम:=अंक[0], अधिकतम:=अंक[0]
- prod_max :=nums[0]
- i के लिए 1 से लेकर अंकों के आकार -1 तक के लिए
- यदि अंक [i] <0, तो
- अधिकतम और न्यूनतम स्वैप करें
- अधिकतम:=अधिकतम अंक[i] और (अधिकतम * अंक[i])
- न्यूनतम:=न्यूनतम अंक[i] और (न्यूनतम * अंक[i])
- यदि या तो न्यूनतम या अधिकतम k के समान है, तो
- सही लौटें
- prod_max :=अधिकतम prod_max और अधिकतम
- यदि अंक [i] <0, तो
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण कोड
def solve(nums, k): minimum = nums[0] maximum = nums[0] prod_max = nums[0] for i in range( 1, len(nums)): if nums[i] < 0: maximum, minimum = minimum, maximum maximum = max(nums[i], maximum * nums[i]) minimum = min(nums[i], minimum * nums[i]) if minimum == k or maximum == k: return True prod_max = max(prod_max, maximum) return False nums = [-2,-1,1,3,5,8] k = 6 print(solve(nums, k))
इनपुट
[-2,-1,1,3,5,8], 6
आउटपुट
True