मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें एक नई सूची ढूंढनी है जैसे कि नई उत्पन्न सूची में इंडेक्स i पर प्रत्येक तत्व मूल सूची में इंडेक्स i को छोड़कर सभी संख्याओं का गुणनफल है। यहां हमें इसे विभाजन का उपयोग किए बिना हल करना है।
इसलिए, यदि इनपुट nums = [2, 3, 4, 5, 6] जैसा है, तो आउटपुट [360, 240, 180, 144, 120] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- यदि nums का आकार < 1, तो
- nums वापस करें
- l := nums का आकार
- left := आकार l की एक सूची और प्रारंभ में सभी मान null
- right := आकार l की एक सूची और प्रारंभ में सभी मान null
- temp := 1
- i के लिए 0 से nums के आकार तक की रेंज में, करें
- यदि i, 0 के समान है, तो
- left[i] := temp
- अन्यथा,
- temp := temp * nums[i - 1]
- left[i] := temp
- यदि i, 0 के समान है, तो
- temp := 1
- i के लिए nums के आकार - 1 से 0 तक, 1 से घटाते हुए, करें
- यदि i, nums के आकार - 1 के समान है, तो
- right[i] := temp
- अन्यथा,
- temp := temp * nums[i + 1]
- right[i] := temp
- यदि i, nums के आकार - 1 के समान है, तो
- i के लिए 0 से nums के आकार तक की रेंज में, करें
- left[i] := left[i] * right[i]
- left वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −
उदाहरण
class Solution: def solve(self, nums): if len(nums) < 1: return nums l = len(nums) left = [None] * l right = [None] * l temp = 1 for i in range(len(nums)): if i == 0: left[i] = temp else: temp = temp * nums[i - 1] left[i] = temp temp = 1 for i in range(len(nums) - 1, -1, -1): if i == len(nums) - 1: right[i] = temp else: temp = temp * nums[i + 1] right[i] = temp for i in range(len(nums)): left[i] = left[i] * right[i] return left ob = Solution() nums = [2, 3, 4, 5, 6] print(ob.solve(nums))
इनपुट
[2, 3, 4, 5, 6]
आउटपुट
[360, 240, 180, 144, 120]