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

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

समस्या विवरण

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

सरणी में सबसे छोटे मान से (सबसे छोटा + n) तक के सभी मान होते हैं। रेंज का एक तत्व सरणी से लापता है। और हमें इस लापता मान को खोजने की आवश्यकता है।

उदाहरण

इनपुट

arr[] = {4, 8, 5, 7}

आउटपुट

6

व्याख्या: रेंज 4 से 8 है (4, 5, 6, 7, 8)। 6 लापता है।

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

समस्या का एक सरल समाधान सरणी को क्रमबद्ध करके और फिर रेंज के पहले तत्व को न्यूनतम मान से शुरू करके खोजना है जो सरणी में मौजूद नहीं है लेकिन रेंज में मौजूद है।

यह समाधान एक भोला दृष्टिकोण है और समस्या को O(n log n) समय जटिलता में हल करेगा।

कम समय में समस्या को हल करने का एक अन्य दृष्टिकोण मानों के XOR का उपयोग करना है। हम रेंज में सभी मानों का XOR खोजेंगे और सरणी के सभी मानों का XOR भी खोजेंगे। इन दोनों मानों का XOR हमारा लापता मान होगा।

C++ कार्यान्वयन (XOR दृष्टिकोण)

#include <bits/stdc++.h> 
using namespace std; 

int findMissingNumArr(int arr[], int n) {
    int arrMin = *min_element(arr, arr + n);
    int numXor = 0;
    int rangeXor = arrMin;
    
    for (int i = 0; i < n; i++) {
        numXor ^= arr[i];
        arrMin++;
        rangeXor ^= arrMin;
    }
    
    return numXor ^ rangeXor;
}

int main() {
    int arr[] = {5, 7, 4, 8, 9};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "सरणी में लापता मान है " << findMissingNumArr(arr, n);
    return 0;
}

आउटपुट

सरणी में लापता मान है 6

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

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

XOR दृष्टिकोण क्यों काम करता है

XOR के गुण: - a ^ a = 0 - a ^ 0 = a - XOR क्रमविनिमेय और साहचर्य है

रेंज XOR में सभी संख्याएं min से min+n तक होती हैं। सरणी XOR में लापता को छोड़कर सभी होती हैं। उन्हें XOR करने पर लापता संख्या रद्द हो जाती है क्योंकि अन्य सभी संख्याएं दो बार आती हैं।

  1. - ज्यामितीय श्रृंखला में लापता संख्या खोजें C++ में

    मान लीजिए हमारे पास एक ऐरे है जो क्रम में ज्यामितीय श्रृंखला के तत्वों को दर्शाता है। एक तत्व लापता है। हमें लापता तत्व खोजना है। तो यदि arr = [1, 3, 27, 81], आउटपुट 9 है, क्योंकि 9 लापता है। बाइनरी सर्च का उपयोग करके, हम इस समस्या को हल कर सकते हैं। हम मध्य तत्व पर जाएंगे, फिर जांचेंगे कि मध्य और म

  1. - अंकगणितीय श्रृंखला में लापता संख्या खोजें C++ में

    मान लीजिए हमारे पास एक ऐरे है जो क्रम में अंकगणितीय श्रृंखला के तत्वों को दर्शाता है। एक तत्व लापता है। हमें लापता तत्व खोजना है। तो यदि arr = [2, 4, 8, 10, 12, 14], आउटपुट 6 है, क्योंकि 6 लापता है। बाइनरी सर्च का उपयोग करके, हम इस समस्या को हल कर सकते हैं। हम मध्य तत्व पर जाएंगे, फिर जांचेंगे कि मध

  1. - C++ में सरणी में एक संख्या की फ्रीक्वेंसी ज्ञात करना

    मान लीजिए हमारे पास एक सरणी है। इसमें n अलग-अलग तत्व हैं। हमें सरणी में एक तत्व की फ्रीक्वेंसी जांचनी है। मान लीजिए A = [5, 12, 26, 5, 3, 4, 15, 5, 8, 4], यदि हम 5 की फ्रीक्वेंसी ढूंढने की कोशिश करते हैं, तो यह 3 होगी। इसे हल करने के लिए, हम सरणी को बाएं से स्कैन करेंगे, यदि तत्व दी गई संख्या के सम