Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में जांचें कि क्या सरणी में ऐसा तत्व है जिसका मान सरणी योग का आधा है


इस समस्या में, हमें अद्वितीय सॉर्टेड मानों की एक सरणी 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!

  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिसके बाएं और दाएं उपसरणी का योग समान हो

    मान लीजिए हमारे पास एक सरणी A है, जिसमें n तत्व हैं। हमारा कार्य सरणी A को दो उपसरणी में विभाजित करना है, ताकि प्रत्येक उपसरणी का योग समान हो। मान लीजिए सरणी A = [2, 3, 4, 1, 4, 5], आउटपुट 1 है, इसलिए 1 से पहले और बाद की उपसरणी ली जाती हैं: [2, 3, 4], और [4, 5]। इस समस्या को हल करने के लिए, हम पहले

  1. - C++ में सरणी के प्रत्येक तत्व का सरपासर काउंट खोजें

    मान लीजिए एक सरणी A दी गई है। हमें उस सरणी में प्रत्येक तत्व के सरपासर की संख्या ज्ञात करनी है। सरपासर वे बड़े तत्व हैं जो वर्तमान तत्व के दाईं ओर सरणी में मौजूद हैं। मान लीजिए A = {2, 7, 5, 3, 0, 8, 1}, सरपासर हैं {4, 1, 1, 1, 2, 0, 0}, इसलिए 2 के दाईं ओर 4 संख्याएं हैं जो 2 से बड़ी हैं, और इसी नि

  1. - C++ में सम ऐरे पजल (बिना घटाव ऑपरेटर के)

    यहां हम ऐरे से संबंधित एक रोचक समस्या देखेंगे। n तत्वों वाला एक ऐरे है। हमें n तत्वों का एक और ऐरे बनाना है। लेकिन दूसरे ऐरे का i-th स्थान पहले ऐरे के i-th तत्व को छोड़कर सभी तत्वों का योग रखेगा। और एक प्रतिबंध है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते। यदि हम घटाव ऑपरेशन का उपयोग कर