মান করুন nums নামক একটি অ্যারেতে n সংখ্যক ইন্টিজার আছে যেখানে n > 1। আমাদের একটি আউটপুট অ্যারে বের করতে হবে যাতে output[i] হলো nums-এর সব উপাদানের গুণফল বাদে nums[i]। ইনপুট [1,2,3,4] হলে আউটপুট হবে [24,12,8,6]। ডিভিশন অপারেটর ছাড়া সমাধান করতে হবে।
সমাধানের ধাপগুলো:
right_mul:=nums-এর সাইজের অ্যারে, ০ দিয়ে ফিল করাright_mul-এর শেষ উপাদান =nums-এর শেষ উপাদানi১ থেকেlen(nums)পর্যন্তright_mul[len(nums) - i - 1] = right_mul[len(nums) - i] * nums[len(nums) - i - 1]
output:=nums-এর সাইজের অ্যারে, ০ দিয়ে ফিল করাprefix := 1, এবংindex := 0index < len(output) - 1যতক্ষণoutput[index] := prefix * right_mul[index + 1]prefix := prefix * nums[index]index := index + 1
output-এর শেষ উপাদান :=prefixoutputরিটার্ন করুন
নিচে ইমপ্লিমেন্টেশন দেওয়া হলো:
উদাহরণ
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]