मान लीजिए हमारे पास आकार N की एक ऐरे है; हमें एक ऐसा एलिमेंट ढूंढना है जो ऐरे को दो अलग-अलग सब-ऐरे में विभाजित करता है जिनका प्रोडक्ट समान हो। यदि ऐसा पार्टीशन संभव नहीं है तो -1 लौटाएं।
तो, यदि इनपुट [2, 5, 3, 2, 5] जैसा है, तो आउटपुट 3 होगा, तब सबऐरे हैं: {2, 5} और {2, 5}।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- n := ऐरे का आकार
- multiply_pref := एक नई लिस्ट
- multiply_pref के अंत में array[0] इन्सर्ट करें
- i को 1 से n तक रेंज में, करें
- multiply_pref के अंत में multiply_pref[i-1] * array[i] इन्सर्ट करें
- multiply_suff := आकार n की लिस्ट, None से भरी
- multiply_suff[n-1] := array[n-1]
- i को n-2 से -1 तक, 1 से घटाते हुए, करें
- multiply_suff[i] := multiply_suff[i+1] * array[i]
- i को 1 से n-1 तक रेंज में, करें
- यदि multiply_pref[i], multiply_suff[i] के समान है, तो
- array[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] * 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