इस समस्या में, हमें अद्वितीय सॉर्टेड मानों की एक सरणी arr दी गई है। हमारा कार्य जांचना है कि क्या सरणी में ऐसा तत्व है जिसका मान सरणी योग का आधा है।
समस्या विवरण: सरणी arr[] के लिए, हमें सरणी में तत्व x ढूंढना है जैसे कि सरणी के सभी तत्वों का योग 2*X के बराबर है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: arr[] = {2, 4, 5, 6, 7}
आउटपुट: No
व्याख्या:
योग = 2 + 4 + 5 + 6 + 7 = 24
कोई तत्व नहीं मिला।
समाधान दृष्टिकोण:
समस्या को हल करने के लिए, हमें बस उस तत्व को ढूंढना है जो सरणी के सभी तत्वों के योग का आधा है।
एल्गोरिदम:
चरण 1: सरणी के सभी तत्वों का योग ढूंढें।
चरण 2: यदि योग मान विषम है, तो -1 वापस करें।
चरण 3: यदि योग मान सम है, तो तत्व x ढूंढें जैसे कि x*2 = योग।
चरण 4: यदि तत्व मिला, तो 1 वापस करें।
चरण 5: यदि तत्व नहीं मिला तो -1 वापस करें।
तत्व खोजने के लिए, हम बाइनरी सर्च एल्गोरिदम का उपयोग कर सकते हैं क्योंकि यह सॉर्टेड है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,
उदाहरण
#include <iostream>
using namespace std;
int checkForElement(int array[], int n) {
int arrSum = 0;
for (int i = 0; i < n; i++)
arrSum += array[i];
if (arrSum % 2)
return -1;
int start = 0;
int end = n - 1;
while (start <= end)
{
int mid = start + (end - start) / 2;
if ( ( 2 * array[mid] ) == arrSum)
return array[mid];
else if (( 2 * array[mid] ) > arrSum)
end = mid - 1;
else
start = mid + 1;
}
return -1;
}
int main() {
int array[] = { 4, 5, 6, 7, 9 };
int n = sizeof(array) / sizeof(array[0]);
int x = checkForElement(array, n);
if(x != -1)
cout<<"Element found, value is "<<x;
else
cout<<"Element not found!";
return 0;
}
आउटपुट
Element not found!