কম্পিউটার টিউটোরিয়াল

পাইথনে Product of Array Except Self (নিজের বাদে সব উপাদানের গুণফল)


মান করুন 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 := 0
  • index < len(output) - 1 যতক্ষণ
    • output[index] := prefix * right_mul[index + 1]
    • prefix := prefix * nums[index]
    • index := index + 1
  • output-এর শেষ উপাদান := prefix
  • output রিটার্ন করুন

নিচে ইমপ্লিমেন্টেশন দেওয়া হলো:

উদাহরণ

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]
  1. পাইথনে অ্যারে পার্টিশন I

  2. পাইথনে অ্যারে রোটেট (Rotate Array)

  3. পাইথনে Bisect - অ্যারে বাইсекশন অ্যালগরিদম

  4. পাইথনে ডাইনামিক অ্যারে বাস্তবায়ন (Implementation of Dynamic Array)