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

क्रमबद्ध पूर्णांकों के दिए गए सरणी में लापता धनात्मक संख्या ज्ञात करने के लिए C++ में एक प्रोग्राम लिखें

मान लीजिए कि हमने बिना क्रमित पूर्णांकों की एक सरणी दी है। कार्य सकारात्मक लापता संख्या को खोजने के लिए है जो दिए गए सरणी में [0 से n] की सीमा में मौजूद नहीं है। उदाहरण के लिए,

इनपुट-1 -

N = 9 arr = [0,2,5,9,1,7,4,3,6]

आउटपुट -

8

स्पष्टीकरण - दिए गए क्रमबद्ध सरणी में, '8' एकमात्र धनात्मक पूर्णांक है जो गायब है, इस प्रकार आउटपुट '8' है।

इनपुट-2 -

>N= 1 arr= [0]

आउटपुट -

1

स्पष्टीकरण - दिए गए सरणी में, '1' एकमात्र सकारात्मक पूर्णांक है जो गायब है, इस प्रकार आउटपुट '1' है।

इस समस्या को हल करने का तरीका

इस विशेष समस्या को हल करने के लिए कई दृष्टिकोण हैं। हालाँकि, हम इस समस्या को रैखिक समय O(n) और स्थिर स्थान O(1) में हल कर सकते हैं।

चूंकि हम जानते हैं कि हमारी सरणी आकार n की है और इसमें [0 से n] की सीमा में बिल्कुल तत्व शामिल हैं। इसलिए यदि हम 'n' के साथ प्रत्येक तत्व और उसके सूचकांक का XOR संचालन करते हैं, तो हम परिणामी संख्या को एक अद्वितीय संख्या के रूप में पा सकते हैं जो सरणी से गायब है।

  • [0 से n] की श्रेणी में तत्वों के साथ सरणी के N आकार का इनपुट लें।

  • एक पूर्णांक फ़ंक्शन findMissingNumber(int arr[], int size) इनपुट के रूप में एक सरणी और उसका आकार लेता है और लापता संख्या देता है।

  • आइए n . लें XOR संचालन करने के लिए एक लापता संख्या के रूप में।

  • सभी सरणी तत्वों पर पुनरावृति करें और लापता संख्या, यानी, n के संबंध में प्रत्येक सरणी तत्व और उसके अनुक्रमित के साथ XOR संचालन करें। ।

  • अब लापता नंबर लौटाएं।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int findMissingNumber(int *arr, int size){
   int missing_no= size;
   for(int i=0;i<size;i++){
      missing_no^= i^arr[i];
   }
   return missing_no;
}
int main(){
   int n= 6;
   int arr[n]= {0,4,2,1,6,3};
   cout<<findMissingNumber(arr,n)<<endl;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाएंगे तो यह आउटपुट को इस रूप में प्रिंट करेगा,

5

यदि हम सरणी के प्रत्येक तत्व और उसके अनुक्रमित के साथ एक्सओआर ऑपरेशन करते हैं, तो यह '5' प्रिंट करेगा जो सरणी से गायब है।


  1. दिए गए पूर्णांकों से अधिकतम संभव मिलान ज्ञात करने के लिए C++ प्रोग्राम

    मान लीजिए, हमें दो पूर्णांक n और m दिए गए हैं और पूर्णांकों के k टुपल्स हैं जिनमें चार पूर्णांक संख्याएँ {ai, bi, ci, di} हैं। चार सरणियाँ a, b, c, d दिए गए हैं, और a[i] i-th tuple के मान को दर्शाता है। अब, आइए एक अनुक्रम dp पर विचार करें जिसमें n धनात्मक पूर्णांक हैं और 1 <=dp[1]

  1. C++ प्रोग्राम दिए गए ग्राफ़ में ब्रिज किनारों की संख्या का पता लगाने के लिए

    मान लीजिए, हमें एक अभारित, अप्रत्यक्ष ग्राफ दिया गया है जिसमें n कोने और m किनारे हैं। ग्राफ़ में ब्रिज का किनारा वह किनारा होता है जिसके हटाने से ग्राफ़ डिस्कनेक्ट हो जाता है। हमें दिए गए आलेख में ऐसे आलेखों की संख्या ज्ञात करनी है। ग्राफ़ में समानांतर किनारे या सेल्फ़-लूप नहीं होते हैं। इसलिए, यद

  1. क्रमबद्ध पूर्णांकों के दिए गए सरणी में लापता धनात्मक संख्या को खोजने के लिए जावा में एक प्रोग्राम लिखें

    मान लीजिए कि हमने बिना क्रमित पूर्णांकों की एक सरणी दी है। कार्य सकारात्मक लापता संख्या को खोजने के लिए है जो दिए गए सरणी में [0 से n] की सीमा में मौजूद नहीं है। उदाहरण के लिए, इनपुट-1 - N = 9 arr = [0,2,5,9,1,7,4,3,6] आउटपुट - 8 स्पष्टीकरण - दिए गए क्रमबद्ध सरणी में, 8 एकमात्र धनात्मक पूर्णांक ह