दिए गए सरणी में प्रश्नों के उत्तर देने के लिए किसी समस्या पर चर्चा करें। उदाहरण के लिए, प्रत्येक क्वेरी इंडेक्स के लिए, हमें इंडेक्स के बाईं ओर वाले और शून्य की संख्या ज्ञात करनी होगी।
Input: arr[ ] = { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0}, queries[ ] = { 2, 4, 1, 0, 5 }
Output:
query 1: zeros = 1,ones = 1
query 2: zeros = 1,ones = 3
query 3: zeros = 1,ones = 0
query 4: zeros = 0,ones = 0
query 5: zeros = 2,ones = 3
Input: arr[ ] = { 0, 0, 1, 1, 1, 0, 1, 0, 0, 1 }, queries[ ] = { 3, 2, 6 }
Output:
query 1: zeros = 2,ones = 1
query 2: zeros = 2,ones = 0
query 3: zeros = 3,ones = 3 समाधान खोजने के लिए दृष्टिकोण
निष्पक्ष दृष्टिकोण
इस समस्या का सरल समाधान है क्वेरी के सूचकांक में सरणी के माध्यम से जाना और प्रत्येक तत्व की जाँच करना; यदि यह 0 है, तो शून्य काउंटर को 1 से बढ़ाएँ, काउंटर को 1 से बढ़ाएँ।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int main(){
int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
int queries[] = { 2, 4, 1, 0, 5 };
int qsize = sizeof(queries) / sizeof(queries[0]);
int zeros=0,ones=0;
// loop for running each query.
for(int i = 0;i<qsize;i++){
//counting zeros and ones
for(int j = 0;j<queries[i];j++){
if(nums[j]==0)
zeros++;
else
ones++;
}
cout << "\nquery " << i+1 << ": zeros = " << zeros << ",ones = " << ones;
zeros=0;
ones=0;
}
return 0;
} आउटपुट
query 1: zeros = 1,ones = 1 query 2: zeros = 2,ones = 2 query 3: zeros = 0,ones = 1 query 4: zeros = 0,ones = 0 query 5: zeros = 2,ones = 3
कुशल दृष्टिकोण
पिछले दृष्टिकोण में, हर बार, हम 0वीं अनुक्रमणिका से नए प्रश्नों के लिए इकाई और शून्य की गणना कर रहे थे।
एक और तरीका यह है कि प्रत्येक इंडेक्स के बाईं ओर मौजूद शून्य और शून्य की गणना करें, उन्हें एक सरणी में संग्रहीत करें, और क्वेरी में लिखे गए इंडेक्स के अनुसार उत्तर दें।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int main(){
int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
int queries[] = { 2, 4, 1, 0, 5 };
int n = sizeof(nums) / sizeof(nums[0]);
int arr[n][2];
int zeros = 0, ones = 0;
// traverse through the nums array.
for (int i = 0; i < n; i++) {
// store the number of zeros and ones in arr.
arr[i][0] = zeros;
arr[i][1] = ones;
// increment variable according to condition
if (nums[i]==0)
zeros++;
else
ones++;
}
int qsize = sizeof(queries) / sizeof(queries[0]);
for (int i = 0; i < qsize; i++)
cout << "\nquery " << i+1 << ": zeros = " << arr[queries[i]][0] << ",ones =" << arr[queries[i]][1];
return 0;
} आउटपुट
query 1: zeros = 1,ones =1 query 2: zeros = 2,ones =2 query 3: zeros = 0,ones =1 query 4: zeros = 0,ones =0 query 5: zeros = 2,ones =3
निष्कर्ष
इस ट्यूटोरियल में, हमने दिए गए सरणी में प्रत्येक क्वेरी के लिए सूचकांक के बाईं ओर इकाई और शून्य की संख्या वापस करने पर चर्चा की। हमने इस समस्या को हल करने के लिए एक सरल दृष्टिकोण और एक कुशल दृष्टिकोण पर चर्चा की। हमने इस समस्या के लिए C++ प्रोग्राम पर भी चर्चा की जिसे हम प्रोग्रामिंग भाषाओं जैसे C, Java, Python, आदि के साथ कर सकते हैं। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगेगा।