मान लीजिए कि हमारे पास n तत्वों के साथ एक क्रमबद्ध सरणी है। सरणी क्रमबद्ध है। हमें यह पता लगाना है कि क्या कोई तत्व उस सरणी में मौजूद है जहां से छोटे तत्वों की संख्या बड़े तत्वों की संख्या के समान है। यदि समान बिंदु सरणी में कई बार दिखाई देता है, तो पहली घटना का सूचकांक लौटाएं। यदि ऐसा कोई बिंदु मौजूद नहीं है, तो -1 लौटें। मान लीजिए कि तत्व ए =[1, 1, 2, 3, 3, 3, 3, 3] जैसे हैं, तो समान बिंदु सूचकांक 2 पर है, तत्व ए [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