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