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

0 और 1 के क्रमबद्ध सरणी को देखते हुए, C++ में सरणी का संक्रमण बिंदु खोजें

केवल 0s और 1s वाली क्रमबद्ध संख्याओं की एक सरणी को देखते हुए, संक्रमण बिंदु खोजें। एक संक्रमण बिंदु सरणी में प्रदर्शित होने वाले पहले '1' का सूचकांक है। उदाहरण के लिए,

इनपुट-1 -

N = 6
arr[ ] = {0,0,0,0,1,1}

आउटपुट -

4

स्पष्टीकरण - चूंकि दिए गए सरणी में जिसमें 0 और 1 हैं, हम देख सकते हैं कि सूचकांक '4' के तत्व की संख्या '1' है।

इनपुट-2 -

N = 5
arr[ ] = {0,0,1,1,1}

आउटपुट -

2

स्पष्टीकरण - दिए गए सरणी में जिसमें 0 और 1 हैं, हम देख सकते हैं कि सूचकांक '2' के तत्व की संख्या '1' है। इस प्रकार, हम 2 लौटेंगे।

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

पूर्णांकों के दिए गए सरणी में, हमें पहले 1 का सूचकांक खोजना होगा। इस विशेष समस्या को हल करने के लिए, हम पहले '1' की अनुक्रमणिका खोजने के लिए बाइनरी खोज विधि का उपयोग करके इसे हल कर सकते हैं।

  • इनपुट एन बाइनरी नंबरों की एक सरणी लें

  • अब एक फ़ंक्शन ट्रांज़िशनपॉइंट (int *arr, int n) इनपुट और उसके आकार के रूप में एक सरणी लेता है और सरणी में प्रदर्शित होने वाले पहले '1' की अनुक्रमणिका देता है।

  • दो पॉइंटर लो, हाई लें जिन्हें '0' और '1' के रूप में इनिशियलाइज़ किया गया है।

  • अब हम सरणी के मध्य बिंदु को ढूंढेंगे और जांचेंगे कि यह '1' है या नहीं।

  • यदि सरणी के बीच में '1' है तो हम इसकी अनुक्रमणिका वापस कर देंगे अन्यथा हम आगे बढ़ कर जांच करेंगे।

  • लो पॉइंटर को बढ़ाएँ और फिर से '1' की जाँच करें।

  • चरणों को तब तक दोहराएं जब तक हमें '1' न मिल जाए।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int transitionPoint(int *arr, int n){
   int low=0;
   int high= n-1;
   while(low<=high){
      int mid = (low+high)/2;
      if(arr[mid]==0)
         low= mid+1;
      else if(arr[mid]==1){
         if(mid==0 || (mid>0 && arr[mid-1]==0))
            return mid;
         high= mid-1;
      }
   }
   return -1;
}
int main(){
   int n= 6;
   int arr[n]= {0,0,0,1,1,1};
   int ans= transitionPoint(arr,n);
   if(ans>=0){
      cout<<"Transition Point is:"<<ans<<endl;
   }
   else{
      cout<<"Not Found"<<endl;
   }
   return 0;
}

आउटपुट

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

Transition Point is: 3

दिए गए सरणी {0,0,0,1,1,1} में तत्व '1' इंडेक्स '3' पर मौजूद है, इस प्रकार हमें आउटपुट '3' के रूप में मिलता है।


  1. जांचें कि दी गई सरणी जोड़ीदार क्रमबद्ध है या नहीं सी ++ में

    हमारे पास n तत्वों के साथ एक सरणी A है। हमें यह जांचना होगा कि सरणी जोड़ीदार क्रमबद्ध है या नहीं। मान लीजिए कि सरणी {8, 10, 18, 20, 5, 15} जैसी है। यह जोड़ी के अनुसार क्रमबद्ध है (8, 10), (18, 20), (5, 15) क्रमबद्ध हैं। यदि सरणी में विषम संख्या में तत्व हैं, तो अंतिम को अनदेखा कर दिया जाएगा। दृष्टि

  1. दूसरी संख्या ज्ञात कीजिए जब C++ में LCM और HCF दिए गए हों

    मान लीजिए कि हमारे पास एक संख्या ए है, और एलसीएम और जीसीडी मान हैं, हमें एक और संख्या बी ढूंढनी है। यदि ए =5, एलसीएम 25 है, एचसीएफ =4 है, तो दूसरी संख्या 4 होगी। हम जानते हैं कि - $$𝐴∗𝐵=𝐿𝐶𝑀∗𝐻𝐶𝐹$$ $$𝐵=\frac{LCM*HCF}{A}$$ उदाहरण #include <iostream> using namespace std; int anotherNumb

  1. C++ में दिए गए सरणी के तत्वों के भाज्य का GCD ज्ञात कीजिए

    मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। हमें सरणी के सभी तत्वों के भाज्य का GCD ज्ञात करना है। मान लीजिए कि तत्व {3, 4, 8, 6} हैं, तो भाज्य का GCD 6 है। यहाँ हम ट्रिक देखेंगे। चूँकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है, जो दोनों संख्याओं को विभाजित करती है, तो दो संख्याओं के भाज्य