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

C++ में बाइनरी सबएरे विद सम (Binary Subarrays With Sum)


मान लीजिए 0s और 1s का एक ऐरे A दिया गया है, हमें गैर-खाली उपसरणियों की संख्या खोजनी है जिनका योग S है? उदाहरण के लिए, यदि इनपुट [1,0,1,0,1] है और S = 2, तो परिणाम 4 होगा।

समाधान दृष्टिकोण

  1. atMost() विधि परिभाषित करें जो अधिकतम x योग वाली उपसरणियां गिनती है

  2. स्लाइडिंग विंडो से j पॉइंटर एडजस्ट करें

  3. ret += i - j + 1 से गिनती जोड़ें

  4. मुख्य विधि से: atMost(S) - atMost(S-1) लौटाएं

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

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

class Solution { 
public: 
    int atMost(vector<int>& A, int x){ 
        if(x < 0) return 0; 
        int j = 0; 
        int ret = 0; 
        for(int i = 0; i < A.size(); i++){ 
            x -= A[i]; 
            while(x < 0){ 
                x += A[j]; 
                j++; 
            } 
            ret += i - j + 1; 
        } 
        return ret; 
    } 
    
    int numSubarraysWithSum(vector<int>& A, int S) { 
        return atMost(A, S) - atMost(A, S - 1); 
    } 
}; 

int main(){ 
    vector<int> v1 = {1,0,1,0,1}; 
    Solution ob; 
    cout << (ob.numSubarraysWithSum(v1, 2)); 
    return 0; 
}

इनपुट

[1,0,1,0,1]

आउटपुट

4
  1. C++ में बाइनरी ट्री में अधिकतम स्तर योग खोजें C++ में बाइनरी ट्री में अधिकतम स्तर योग खोजें

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है जिसमें सकारात्मक और नकारात्मक मान हैं। हमारा कार्य बाइनरी ट्री में अधिकतम स्तर योग खोजना है। समस्या विवरण: हमारे पास एक बाइनरी ट्री है, हम बाइनरी ट्री में सभी स्तरों का योग खोजेंगे और फिर उनमें से अधिकतम लौटाएंगे।एक उदाहरण लेकर समस्या को समझते

  1. C++ में बाइनरी ट्री में अधिकतम स्पाइरल सम C++ में बाइनरी ट्री में अधिकतम स्पाइरल सम

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में बाइनरी ट्री में अधिकतम स्पाइरल सम ढूंढेगा।बाइनरी ट्री का स्पाइरल सम  बाइनरी ट्री के स्पाइरल ट्रैवर्सल में मिलने वाले नोड्स का योग है।ट्री के स्पाइरल ट्रैवर्सल में, नोड्स को रूट से लीफ नोड तक ट्रैवर्स कि

  1. - C++ में योग शून्य वाले सभी उपसरणी (Subarrays) प्रिंट करें

    इस समस्या में, हमें पूर्णांक मानों की एक सरणी दी गई है और हमें इस सरणी से उन सभी उपसरणी को प्रिंट करना है जिनका योग 0 के बराबर है। विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, इनपुट: सरणी = [-5, 0, 2, 3, -3, 4, -1] आउटपुट: इंडेक्स 1 से 4 तक उपसरणी का योग 0 है। इंडेक्स 5 से 7 तक उपसरणी का यो