ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা আছে, আমাদের একটি নতুন তালিকা খুঁজে বের করতে হবে যাতে নতুন উৎপন্ন তালিকার সূচক i-এর প্রতিটি উপাদান হল সূচী i-এর একটি ছাড়া মূল তালিকার সমস্ত সংখ্যার গুণফল। এখানে আমাদের ডিভিশন ব্যবহার না করে সমাধান করতে হবে।
সুতরাং, ইনপুট যদি সংখ্যার মত হয় =[2, 3, 4, 5, 6], তাহলে আউটপুট হবে [360, 240, 180, 144, 120]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি সংখ্যার আকার <1, তারপর
- রিটার্ন সংখ্যা
- l :=সংখ্যার আকার
- বাম :=l আকারের একটি তালিকা এবং প্রাথমিকভাবে সমস্ত মান শূন্য
- ডান :=l আকারের একটি তালিকা এবং প্রাথমিকভাবে সমস্ত মান শূন্য
- তাপ :=1
- আমি 0 থেকে সংখ্যার আকারের মধ্যে,
- করুন
- যদি আমি 0 এর মত হয়, তাহলে
- বাম[i] :=টেম্প
- অন্যথায়,
- temp :=temp * nums[i - 1]
- বাম[i] :=টেম্প
- যদি আমি 0 এর মত হয়, তাহলে
- তাপ :=1
- আমি সংখ্যার পরিসরের আকার - 1 থেকে 0, 1 দ্বারা হ্রাস করুন, করুন
- যদি i সংখ্যা - 1 এর আকারের সমান হয়, তাহলে
- ডান[i] :=টেম্প
- অন্যথায়,
- temp :=temp * nums[i + 1]
- ডান[i] :=টেম্প
- যদি i সংখ্যা - 1 এর আকারের সমান হয়, তাহলে
- আমি 0 থেকে সংখ্যার আকারের মধ্যে,
- করুন
- left[i] :=left[i] * right[i]
- বাম দিকে ফিরুন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
শ্রেণির সমাধান:def solve(self, nums):if len(nums) <1:রিটার্ন nums l =len(nums) left =[None] * l right =[None] * l temp =1 for i in range(len(nums)):যদি i ==0:left[i] =temp else:temp =temp * nums[i - 1] left[i] =temp temp =1 in range(len(nums) এর জন্য - 1, -1, -1):যদি i ==len(nums) - 1:right[i] =temp else:temp =temp * nums[i + 1] right[i] =temp in range (i) এর জন্য len(সংখ্যা)):left[i] =left[i] * right[i] return leftob =Solution()nums =[2, 3, 4, 5, 6]print(ob.solve(nums))
ইনপুট
[2, 3, 4, 5, 6]