ধরুন আমাদের আকার N এর একটি অ্যারে আছে; আমাদের এমন একটি উপাদান খুঁজে বের করতে হবে যা অ্যারেটিকে সমান পণ্য সহ দুটি ভিন্ন সাব-অ্যারেতে ভাগ করে। রিটার্ন -1 যদি এরকম কোন পার্টিশন সম্ভব না হয়।
সুতরাং, যদি ইনপুটটি [2,5,3,2,5] এর মত হয়, তাহলে আউটপুট হবে 3 তাহলে সাবয়ারে হল:{2, 5} এবং {2, 5}
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=অ্যারের আকার
- multiply_pref :=একটি নতুন তালিকা multiply_pref এর শেষে
- অ্যারে সন্নিবেশ করুন[0]
- 1 থেকে n রেঞ্জের জন্য,
- করুন
- multiply_pref[i-1]*array[i] multiply_pref এর শেষে সন্নিবেশ করুন
- multiply_suff :=n আকারের একটি তালিকা, এবং কোনটি দিয়ে পূরণ করবেন না
- multiply_suff[n-1] :=অ্যারে[n-1] n-2 থেকে -1 রেঞ্জে
- এর জন্য, 1 কমিয়ে,
- করুন
- multiply_suff[i] :=multiply_suff[i+1]*array[i]
- 1 থেকে n-1 রেঞ্জের জন্য,
- করুন
- যদি multiply_pref[i] হয় multiply_suff[i] এর মত, তাহলে
- রিটার্ন অ্যারে[i]
- যদি multiply_pref[i] হয় multiply_suff[i] এর মত, তাহলে
- রিটার্ন -1
উদাহরণ কোড
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def search_elem(array): n = len(array) multiply_pref = [] multiply_pref.append(array[0]) for i in range(1, n): multiply_pref.append(multiply_pref[i-1]*array[i]) multiply_suff = [None for i in range(0, n)] multiply_suff[n-1] = array[n-1] for i in range(n-2, -1, -1): multiply_suff[i] = multiply_suff[i+1]*array[i] for i in range(1, n-1): if multiply_pref[i] == multiply_suff[i]: return array[i] return -1 array = [2,5,3,2,5] print(search_elem(array))
ইনপুট
[2,5,3,2,5]
আউটপুট
3