मान लीजिए हमारे पास n तत्वों की एक सॉर्टेड सरणी है। सरणी सॉर्टेड है। हमें यह ढूंढना है कि क्या सरणी में कोई ऐसा तत्व मौजूद है जहां से छोटे तत्वों की संख्या बड़े तत्वों की संख्या के समान है। यदि समान बिंदु सरणी में कई बार प्रकट होता है, तो पहली घटना का सूचकांक वापस करें। यदि ऐसा कोई बिंदु मौजूद नहीं है, तो -1 वापस करें। मान लीजिए तत्व A = [1, 1, 2, 3, 3, 3, 3, 3] की तरह हैं, तो समान बिंदु सूचकांक 2 पर है, तत्व A[2] = 2 है। क्योंकि इसमें केवल एक छोटा तत्व है जो 1 है, और केवल एक बड़ा तत्व है, जो 3 है।
हम सभी विशिष्ट तत्वों को स्टोर करने के लिए एक सहायक सरणी बनाएंगे। यदि विशिष्ट तत्वों की संख्या सम है, तो हम कोई समान बिंदु नहीं ढूंढ सकते, अन्यथा मध्य तत्व मध्य-बिंदु होगा।
उदाहरण
#include<iostream> using namespace std; int searchEqualPoint(int arr[], int n) { int aux_arr[n]; int i = 0, aux_index = 0; while (i < n) { aux_arr[aux_index++] = i++; while (i<n && arr[i] == arr[i-1]) i++; } return (aux_index & 1)? aux_arr[aux_index>>1] : -1; } int main() { int arr[] = {1, 1, 2, 3, 3, 3, 3, 3}; int n = sizeof(arr)/sizeof(arr[0]); int index = searchEqualPoint(arr, n); if (index != -1) cout << "Equal Point is: " << arr[index]; else cout << "No Equal Point exists"; } आउटपुट
Equal Point is: 2