हमें पूर्णांकों की एक सरणी arr[] दी गई है। साथ ही दो संख्याएँ A और B। लक्ष्य arr[] के उन सभी सबएरे की गिनती करना है जिनमें सभी में A और B की घटनाएं समान हों। यदि सरणी [1,2,3] है और A=1 और B=2 है। सबएरे होंगे [3], [1,2], [1,2,3]।
उदाहरण सहित समझ
इनपुट - arr[] = { 2, 2, 1, 1, 1, 5 }; A=1, B=5
आउटपुट - दो दिए गए तत्वों की समान घटनाओं वाले सबएरे की संख्या: 4
व्याख्या - सबएरे होंगे: [2], [2], [2,2], [1,5]। पहले तीन में 1 और 5 की 0 घटनाएं हैं, अंतिम में दोनों की 1 घटना है।
इनपुट - arr[] = { 5,3,7,5,3 }; A=1, B=2
आउटपुट - दो दिए गए तत्वों की समान घटनाओं वाले सबएरे की संख्या: 15
व्याख्या - सबएरे होंगे: ( जिनमें 1 और 2 की 0 घटनाएं हैं )
[5], [3], [7], [5], [3] - 5 [5,3], [3,7], [7,5], [5,3] - 4 [5,3,7], [3,7,5], [7,5,3] - 3 [5,3,7,5], [3,7,5,3] - 2 [5,3,5,7,5] - 1 कुल 15 सबएरे जिनमें 1 और 2 दोनों की 0 घटनाएं हैं।
प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम सभी संभावित सबएरे उत्पन्न करने के लिए दो फॉर लूप का उपयोग करके सरणी को ट्रैवर्स करेंगे। i=0 से i<=size-1 और j=i से j<=size-1 तक। बने सबएरे arr[i] से arr[j] के बीच होंगे। प्रत्येक सबएरे में A और B की आवृत्ति गिनें। यदि समान हैं तो काउंट बढ़ाएँ।
- संख्याओं की एक सरणी
arr[]लें। - फंक्शन
sub_EqualOccurrence(int arr[], int size, int A, int B)सरणी लेता है और A और B की समान संख्या वाले सबएरे की गिनती लौटाता है। - प्रारंभिक काउंट 0 लें।
- दो फॉर लूप का उपयोग करके i=0 से i<=size-1 और j=0 से j<=size-1 तक सरणी को ट्रैवर्स करें।
- सबएरे
arr[i]सेarr[j]में A's और B's की संख्या के लिए दो चरtotal_A,total_Bको 0 के रूप में लें। arr[j]की तुलना A और B से करें। यदिarr[j]A या B है तो संबंधित काउंट (total_Aयाtotal_B) बढ़ाएँ।- यदि
total_A == total_B। काउंट बढ़ाएँ। (सबएरे में तत्वों के रूप में A's और B's की समान संख्या है)। - दोनों लूप के अंत में, परिणाम के रूप में काउंट लौटाएँ।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int sub_EqualOccurrence(int arr[], int size, int A, int B) {
int count = 0;
for (int i = 0; i <= size - 1; i++) {
int total_A = 0;
int total_B = 0;
for (int j = i; j <= size - 1; j++) {
if (arr[j] == A) {
total_A++;
} else if (arr[j] == B) {
total_B++;
}
if (total_A == total_B) {
count++;
}
}
}
return count;
}
int main() {
int arr[] = { 2, 3, 1, 1, 4, 5 };
int size = sizeof(arr) / sizeof(arr[0]);
int A = 1, B = 5;
cout << "Count of subarrays with equal number of occurrences of two given elements are: " << sub_EqualOccurrence(arr, size, A, B);
return 0;
}
आउटपुट
Count of subarrays with equal number of occurrences of two given elements are: 5