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

C++ का उपयोग करके सरणी में एकमात्र अलग तत्व खोजना

समस्या विवरण

इस समस्या में, हमें आकार n की एक सरणी arr[] दी गई है। हमारा कार्य सरणी में एकमात्र अलग तत्व खोजना है।

सरणी में केवल दो अलग-अलग प्रकार के तत्व हैं। सभी तत्व समान हैं सिवाय एक के।

उदाहरण

इनपुट

arr[] = {1, 1, 1, 2, 1, 1, 1, 1}

आउटपुट

2

हल का दृष्टिकोण

समस्या को हल करने का एक सरल दृष्टिकोण सरणी को पार करना और उन तत्वों को खोजना है जो सरणी के अन्य तत्वों से अलग हैं। इस दृष्टिकोण को O(N²) समय जटिलता की आवश्यकता होती है।

O(N) में समस्या को हल करने का एक अन्य दृष्टिकोण हैश टेबल का उपयोग करके तत्वों और उनकी घटना आवृत्ति को संग्रहीत करना है। और एकल घटना आवृत्ति वाले मान को प्रिंट करना।

अनुकूलित O(N) दृष्टिकोण (स्थिर स्पेस)

चूंकि केवल दो अलग-अलग मान हैं और एक केवल एक बार आता है, हम पहले 3 तत्वों की जांच करके बहुमत तत्व निर्धारित कर सकते हैं, फिर अलग तत्व ढूंढ सकते हैं।

C++ कार्यान्वयन

#include <iostream> 
using namespace std; 

int findDiffElementArray(int arr[], int n) {
    if (n == 1) return -1;
    if (n == 2) return arr[0];
    
    // पहले 3 तत्वों से बहुमत तत्व निर्धारित करें
    int majority;
    if (arr[0] == arr[1] || arr[0] == arr[2])
        majority = arr[0];
    else
        majority = arr[1];
    
    // अलग तत्व खोजें
    for (int i = 0; i < n; i++) {
        if (arr[i] != majority)
            return arr[i];
    }
    return -1;
}

int main() {
    int arr[] = {5, 5, 1, 5, 5, 5, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "सरणी में अलग तत्व है " << findDiffElementArray(arr, n);
    return 0;
}

आउटपुट

सरणी में अलग तत्व है 1

जटिलता विश्लेषण

  • समय जटिलता: O(N)
  • स्पेस जटिलता: O(1)

वैकल्पिक: XOR दृष्टिकोण

यदि सरणी में सभी तत्व दो बार आते हैं सिवाय एक के, तो XOR काम करता है। लेकिन यहां पैटर्न अलग है (एक तत्व एक बार, अन्य सभी कई बार)।

  1. - बाइनरी सर्च दृष्टिकोण का उपयोग करके सरणी में पीक एलिमेंट खोजने के लिए C++ प्रोग्राम

    इस C++ प्रोग्राम में, हम बाइनरी सर्च दृष्टिकोण का उपयोग करके सरणी में एक पीक एलिमेंट ढूंढते हैं। यह एल्गोरिदम पहले मिले पीक को परिणाम के रूप में लौटाता है और इसकी समय जटिलता O(log n) है। एल्गोरिदम शुरुआत    PeakElement() फ़ंक्शन में arr डेटा की सरणी, प्रारंभ और अंत इंडेक्स आर्गुमेंट सूची म

  1. - बाइनरी सर्च दृष्टिकोण का उपयोग करके सरणी में न्यूनतम एलिमेंट खोजने के लिए C++ प्रोग्राम

    यह बाइनरी सर्च दृष्टिकोण का उपयोग करके सरणी के न्यूनतम एलिमेंट को खोजने के लिए एक C++ प्रोग्राम है। इस प्रोग्राम की समय जटिलता O(log n) है। एल्गोरिदम शुरुआत दिए गए अनसॉर्टेड डेटा सरणी के लिए बाइनरी सर्च ट्री बनाएं। न्यूनतम एलिमेंट खोजने के लिए पॉइंटर को बाएं सबसे चाइल्ड नोड पर ले जाएं। इस मान को दिए

  1. - लिनियर सर्च का उपयोग करके सरणी में न्यूनतम एलिमेंट खोजने के लिए C++ प्रोग्राम

    यह लिनियर सर्च दृष्टिकोण का उपयोग करके सरणी के न्यूनतम एलिमेंट को खोजने के लिए एक C++ प्रोग्राम है। इस प्रोग्राम की समय जटिलता O(n) है। एल्गोरिदम शुरुआत डेटा एलिमेंट को सरणी में निर्दिष्ट करें। 0 इंडेक्स पर मान को न्यूनतम वेरिएबल में निर्दिष्ट करें। न्यूनतम की तुलना अन्य डेटा एलिमेंट्स से क्रमिक रूप