हमें पूर्णांकों की एक सरणी arr[] दी गई है। साथ ही एक संख्या K। लक्ष्य arr[] के उन सभी सबएरे की गिनती करना है जिनके सभी तत्व K से अधिक हों या K सबएरे के सभी तत्वों से कम हो। यदि सरणी [1,2,3] है और K=1 है। सबएरे होंगे [2], [3], [2,3]।
उदाहरण सहित समझ
इनपुट - arr[] = { 2, 2, 1, 1, 1, 5 }; K=1
आउटपुट - सभी तत्व K से अधिक वाले सबएरे की संख्या: 4
व्याख्या - सबएरे होंगे: [2], [2], [5], [2,2]। प्रत्येक सबएरे में सभी तत्व 1 से अधिक हैं।
इनपुट - arr[] = { 3,4,5,6 }; K=2
आउटपुट - सभी तत्व K से अधिक वाले सबएरे की संख्या: 10
व्याख्या - सबएरे होंगे: [3], [4], [5], [6], [3,4], [4,5], [5,6], [3,4,5], [4,5,6], [3,4,5,6]. कुल संख्या=10।
प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम फॉर लूप का उपयोग करके सरणी को ट्रैवर्स करेंगे। यदि वर्तमान तत्व K से अधिक है। काउंट बढ़ाएँ। अन्यथा count=0 सेट करें और total=count*(count+1)/2 (सबएरे के लिए)। यदि अंत में काउंट शून्येतर है। शेष सबएरे की गिनती के लिए count*(count+1)/2 फिर से जोड़ें।
- संख्याओं की एक सरणी
arr[]लें। - फंक्शन
sub_greater_k(int arr[], int size, int k)सरणी लेता है और सभी तत्व k से अधिक वाले सबएरे की गिनती लौटाता है। - प्रारंभिक काउंट 0 लें।
- फॉर लूप का उपयोग करके i=0 से i<size तक सरणी को ट्रैवर्स करें।
- यदि
arr[i] > kतो काउंट बढ़ाएँ। count(तत्व > k) वाले सबएरे होंगेcount*(count+1)/2। इसे ऐसे सभी सबएरे के कुल में जोड़ें।- अंत में फिर से
count*(count+1)/2कुल में जोड़ें यदि काउंट शून्येतर है। - परिणाम के रूप में कुल लौटाएँ।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int sub_greater_k(int arr[], int size, int k) {
int count = 0;
int total = 0;
for (int i = 0; i < size; i++) {
if (arr[i] > k) {
count++;
} else {
total += (count) * (count + 1) / 2;
count = 0;
}
}
if (count) {
total += (count) * (count + 1) / 2;
}
return total;
}
int main() {
int arr[] = {2, 4, 6, 1, 3, 7, 9 };
int size = sizeof(arr) / sizeof(arr[0]);
int k = 7;
cout << "Count of subarrays with all elements greater than K are: " << sub_greater_k(arr, size, k);
return 0;
}
आउटपुट
Count of subarrays with all elements greater than K are: 1