मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, हमें एक नई सूची ढूंढनी होगी जैसे कि नई उत्पन्न सूची के सूचकांक i में प्रत्येक तत्व मूल सूची में सभी संख्याओं का गुणनफल है, सूचकांक i पर एक को छोड़कर। यहां हमें इसे बिना विभाजन के हल करना है।
इसलिए, अगर इनपुट संख्या =[2, 3, 4, 5, 6] की तरह है, तो आउटपुट [360, 240, 180, 144, 120] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि अंकों का आकार <1, तो
- रिटर्न अंक
- l :=अंकों का आकार
- बाएं:=आकार l की एक सूची और प्रारंभ में सभी मान शून्य हैं
- दाएं:=आकार l की एक सूची और प्रारंभ में सभी मान शून्य हैं
- अस्थायी:=1
- मैं के लिए 0 से लेकर अंकों के आकार तक, करें
- यदि मैं 0 के समान है, तो
- बाएं[i] :=अस्थायी
- अन्यथा,
- अस्थायी:=अस्थायी * अंक [i - 1]
- बाएं[i] :=अस्थायी
- यदि मैं 0 के समान है, तो
- अस्थायी:=1
- मैं के लिए संख्या के आकार के आकार में - 1 से 0, 1 से घटाएं
- यदि मैं अंकों -1 के आकार के समान हूं, तो
- दाएं[i] :=अस्थायी
- अन्यथा,
- अस्थायी:=अस्थायी * अंक [i + 1]
- दाएं[i] :=अस्थायी
- यदि मैं अंकों -1 के आकार के समान हूं, तो
- मैं के लिए 0 से लेकर अंकों के आकार तक, करें
- बाएं[i] :=बाएं[i] * दाएं[i]
- बाएं लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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]