ধরুন আমাদের একটি অ্যারে আছে যার নাম n পূর্ণসংখ্যার সংখ্যা যেখানে n> 1। আমাদের এমন একটি অ্যারে আউটপুট খুঁজে বের করতে হবে যাতে আউটপুট[i] nums[i] ছাড়া সংখ্যার সমস্ত উপাদানের গুণফলের সমান হয়। তাই যদি ইনপুট অ্যারে হয় [1,2,3,4], তাহলে আউটপুট হবে [24,12,8,6]। আমাদের ডিভিশন অপারেটর ব্যবহার না করে এটি সমাধান করতে হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- right_mul :=সংখ্যার সমান আকারের একটি বিন্যাস, এটি 0 দিয়ে পূরণ করুন
- right_mul এর শেষ উপাদান =সংখ্যার শেষ উপাদান
- আমি রেঞ্জ 1 থেকে সংখ্যার দৈর্ঘ্যের জন্য
- right_mul[সংখ্যার দৈর্ঘ্য – i – 1] =right_mul[সংখ্যার দৈর্ঘ্য – i]* সংখ্যাগুলি[সংখ্যার দৈর্ঘ্য – i – 1]
- আউটপুট :=সংখ্যার সমান আকারের একটি অ্যারে, এটি 0 দিয়ে পূরণ করুন
- উপসর্গ :=1, এবং সূচক :=0
- যখন সূচক <আউটপুটের দৈর্ঘ্য – 1
- আউটপুট[সূচি] :=উপসর্গ * right_mul[index + 1]
- উপসর্গ :=উপসর্গ * সংখ্যা[সূচি]
- সূচী :=সূচক + 1
- আউটপুটের শেষ উপাদান :=উপসর্গ
- রিটার্ন আউটপুট
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
শ্রেণির সমাধান(অবজেক্ট):def productExceptSelf(self, nums):right_multiply =[0] * len(nums) right_multiply[-1]=nums[-1] i in range(1,len(nums)) এর জন্য :right_multiply[len(nums)-i-1] =right_multiply[len(nums)-i] * nums[len(nums)-i-1] আউটপুট =[0]*len(nums) উপসর্গ =1 current_index =0 যখন কারেন্ট_ইনডেক্স <লেন(আউটপুট)-1:আউটপুট[কারেন্ট_ইনডেক্স] =উপসর্গ * ডান_গুণ[চলমান_সূচক+1] উপসর্গ *=সংখ্যা[কারেন্ট_ইনডেক্স] বর্তমান_সূচক +=1 আউটপুট[-1] =প্রিফিক্স রিটার্ন আউটপুট 1 =সমাধান()মুদ্রণ(ob1) .productExceptSelf([1,3,5,7,9]))
ইনপুট
[1,3,5,7,9]