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

C++ में साइज K के सब-ऐरे जिनका औसत थ्रेशोल्ड से बड़ा या बराबर है


मान लीजिए हमारे पास इंटीजर्स का एक ऐरे arr और दो इंटीजर्स k और threshold हैं। हमें साइज k के उन सब-ऐरे की संख्या ढूंढनी है जिनका औसत threshold से बड़ा या बराबर है। उदाहरण के लिए, अगर इनपुट है: [2,2,2,2,5,5,5,8] और k = 3 और threshold = 4, तो आउटपुट 3 होगा। क्योंकि सबऐरे [2,5,5], [5,5,5] और [5,5,8] के औसत क्रमशः 4, 5 और 6 हैं।

इसे हल करने के लिए, हम इन स्टेप्स को फॉलो करेंगे:

  • sum := 0, div := k और n := ऐरे में एलिमेंट्स की संख्या

  • sum := arr के सभी एलिमेंट्स का योग सेट करें (पहले k एलिमेंट्स)

  • ret := 0

  • i := 0 और j को k से n-1 तक रेंज में, दोनों i और j को 1 से बढ़ाएं:

    • अगर sum / div >= threshold, तो res को 1 से बढ़ाएं

    • sum को arr[i] से घटाएं

    • sum को arr[j] से बढ़ाएं

  • अगर sum / div >= threshold, तो ret को 1 से बढ़ाएं

  • ret लौटाएं।

उदाहरण (C++)

बेहतर समझ के लिए निम्न इम्प्लीमेंटेशन देखें:

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

class Solution {
public:
    int numOfSubarrays(vector<int>& arr, int k, int threshold) {
        double sum = 0;
        double div = k;
        int n = arr.size();
        for(int i = 0; i < k; i++){
            sum += arr[i];
        }
        int ret = 0;
        for(int i = 0, j = k; j < n; i ++, j++){
            if(sum / div >= threshold ){
                ret++;
            }
            sum -= arr[i];
            sum += arr[j];
        }
        if(sum / div >= threshold ){
            ret++;
        }
        return ret;
    }
};

int main(){
    vector<int> v = {2,2,2,2,5,5,5,8};
    Solution ob;
    cout << (ob.numOfSubarrays(v, 3, 4));
}

इनपुट

[2,2,2,2,5,5,5,8] 3 4

आउटपुट

3

  1. - C++ में N से छोटी या बराबर न्यूनतम संख्याएं जिनका योग S हो

    समस्या कथन1 से N तक N संख्याएं और एक संख्या S दी गई है। कार्य उन न्यूनतम संख्याओं को प्रिंट करना है जिनका योग S देता हैउदाहरणयदि n = 7 और s = 10 तो न्यूनतम 2 संख्याएं आवश्यक हैं(9, 1) (8, 2) (7, 3) (6, 4)एल्गोरिदमउत्तर की गणना नीचे दिए गए सूत्र का उपयोग करके की जा सकती है (S/N) + 1 यदि { S %N > 0

  1. - C++ का उपयोग करके एक संख्या x खोजें जिसके अंकों का योग x के बराबर दिए गए n के बराबर हो

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक अन्य मान x ढूंढना है, जैसे कि x + x के अंकों का योग दी गई संख्या n के बराबर हो। मान लीजिए n का मान 21 है। यह प्रोग्राम x = 15 लौटाएगा, क्योंकि 15 + 15 के अंकों का योग (1+5) = 21 = n होता है। इसे हल करने के लिए, हमें सरल दृष्टिकोण अपना

  1. - C++ में दी गई संख्या n के लिए x ढूंढें जहां x + अंकों का योग = n

    समस्या विवरण एक संख्या n दी गई है, हमें एक मान x ढूंढना है जिससे x + x के अंकों का योग = n हो। उदाहरण के लिए, n = 21 के लिए, x = 15 होगा क्योंकि 15 + (1+5) = 21। हल दृष्टिकोण सरल दृष्टिकोण: 1 से n तक पुनरावृति करें, प्रत्येक संख्या के लिए जांचें कि क्या संख्या + उसके अंकों का योग = n है। यदि हां,