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

अधिकतम तत्व k से बड़ा होने वाली उप-सरणियों की गणना - C++

समस्या विवरण

हमें एक पूर्णांक ऐरे arr[] और एक चर k दिया गया है। लक्ष्य उन उप-सरणियों की गणना करना है जिनका अधिकतम तत्व k से बड़ा है।

उदाहरण

इनपुट: arr[] = {1,2,5,3}, k=3

आउटपुट: 6

व्याख्या: 5 वाली उप-सरणियाँ: [5], [2,5], [5,3], [1,2,5], [2,5,3], [1,2,5,3]

इनपुट: arr[] = {1,2,3,4,5}, k=4

आउटपुट: 5

व्याख्या: केवल 5 वाली उप-सरणियाँ: [5], [4,5], [3,4,5], [2,3,4,5], [1,2,3,4,5]

दृष्टिकोण

कुल उप-सरणियाँ = n*(n+1)/2। उन उप-सरणियों को घटाएँ जिनके सभी तत्व k से छोटे या बराबर हैं। k से बड़े तत्वों को छोड़कर, लगातार k से छोटे तत्वों के खंडों की लंबाई l के लिए l*(l+1)/2 उप-सरणियाँ बनती हैं।

एल्गोरिदम

  1. प्रारंभिक count = 0
  2. i = 0 से size तक लूप करें:
    • यदि arr[i] > k तो छोड़ दें
    • अन्यथा आंतरिक लूप से temp = लगातार k से छोटे तत्वों की लंबाई गिनें
    • count += temp*(temp+1)/2
  3. count = total_subarrays - count
  4. count लौटाएँ

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

int maximum_k(int arr[], int size, int k) {
    int count = 0;
    int i = 0;
    while (i < size) {
        if (arr[i] > k) { i++; continue; }
        int temp = 0;
        while (i < size && arr[i] <= k) { i++; temp++; }
        count += temp * (temp + 1) / 2;
    }
    count = (size * (size + 1) / 2) - count;
    return count;
}

int main() {
    int arr[] = {4, 1, 2, 7, 8, 3};
    int k = 5;
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count: " << maximum_k(arr, size, k);
    return 0;
}

आउटपुट

Count: 14
  1. - C++ में B से अधिक A वाले प्रीफिक्सेस

    इस समस्या में, हमें केवल a और b वाली स्ट्रिंग str और एक इंटीजर N दिया गया है जिससे str को N बार जोड़कर एक स्ट्रिंग बनाई जाती है। हमारा कार्य उन सबस्ट्रिंग्स की कुल संख्या प्रिंट करना है जिनमें a की गिनती b की गिनती से अधिक है।समस्या को समझने के लिए एक उदाहरण लेते हैंInput: aab 2 Output: 9 Explanatio

  1. - C++ में पिछला बड़ा एलिमेंट

    इस समस्या में, हमें एक ऐरे दिया गया है। हमारा कार्य ऐरे में वर्तमान एलिमेंट से पहले आने वाले सबसे बड़े एलिमेंट को लौटाना है अन्यथा -1 प्रिंट करना है।समस्या को समझने के लिए एक उदाहरण लेते हैंInput: {6, 2, 7, 1, 5, 3} Output: -1, 6, -1, 7, 7, 7इस समस्या को हल करने के लिए, एक आसान और स्पष्ट समाधान नेस्

  1. - सॉर्टेड ऐरे में वह तत्व खोजें जिसकी फ्रीक्वेंसी n/2 से अधिक या बराबर हो C++ में

    मान लीजिए हमारे पास आकार n का एक ऐरे है। यह ऐरे सॉर्टेड है। एक तत्व ऐसा है जिसकी फ्रीक्वेंसी n/2 से अधिक या बराबर है, जहां n ऐरे में तत्वों की संख्या है। तो यदि ऐरे [3, 4, 5, 5, 5] जैसा है, तो आउटपुट 5 होगा। यदि हम इस प्रकार के ऐरे को ध्यान से देखें, तो हम आसानी से देख सकते हैं कि जिस संख्या की फ्री