मान लीजिए कि हमारे पास n पूर्णांकों की संख्या नामक एक सरणी है जहां n> 1. हमें एक सरणी आउटपुट ढूंढना है जैसे कि आउटपुट [i] अंक [i] को छोड़कर संख्याओं के सभी तत्वों के उत्पाद के बराबर है। तो अगर इनपुट ऐरे [1,2,3,4] है, तो आउटपुट [24,12,8,6] होगा। हमें इसे डिवीजन ऑपरेटर का उपयोग किए बिना हल करना होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- right_mul :=अंकों के समान आकार की एक सरणी, इसे 0 से भरें
- right_mul का अंतिम तत्व =अंकों का अंतिम तत्व
- i के लिए 1 से लेकर अंकों की लंबाई तक
- right_mul[अंकों की लंबाई - i - 1] =right_mul [अंकों की लंबाई - i] * अंक [अंकों की लंबाई - i - 1]
- आउटपुट:=अंकों के समान आकार की एक सरणी, इसे 0 से भरें
- उपसर्ग:=1, और अनुक्रमणिका:=0
- जबकि इंडेक्स <आउटपुट की लंबाई - 1
- आउटपुट [इंडेक्स] :=प्रीफ़िक्स * राइट_मुल [इंडेक्स + 1]
- उपसर्ग:=उपसर्ग * अंक [सूचकांक]
- सूचकांक :=अनुक्रमणिका + 1
- आउटपुट का अंतिम तत्व:=उपसर्ग
- रिटर्न आउटपुट
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def productExceptSelf(self, nums): right_multiply = [0] * len(nums) right_multiply[-1]=nums[-1] for i in range(1,len(nums)): right_multiply[len(nums)-i-1] = right_multiply[len(nums)-i] * nums[len(nums)-i-1] output = [0]*len(nums) prefix = 1 current_index = 0 while current_index < len(output)-1: output[current_index] = prefix * right_multiply[current_index+1] prefix *= nums[current_index] current_index +=1 output[-1] = prefix return output ob1 = Solution() print(ob1.productExceptSelf([1,3,5,7,9]))
इनपुट
[1,3,5,7,9]
आउटपुट
[945, 315, 189, 135, 105]