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

सी ++ में योग के साथ बाइनरी सबएरे

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

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एटमोस्ट () नामक एक विधि को परिभाषित करें, यह सरणी ए और पूर्णांक x लेगा

  • यदि x <0 है, तो 0 लौटाएं, j :=0 सेट करें और रिट सेट करें:=0

  • मैं के लिए 0 से ए के आकार के बीच

    • x को A[i]

      . से घटाएं
    • जबकि x <0

      • x को A[j] से बढ़ाएँ, j को 1 से बढ़ाएँ

    • रिट:=रिट + आई - जे + 1

  • वापसी रिट

  • मुख्य विधि से निम्न कार्य करें -

  • ret :=atMost(A, S) – atMost(A, S – 1)

  • वापसी रिट

आइए बेहतर समझने के लिए निम्नलिखित कार्यान्वयन देखें &mius;

उदाहरण

#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);
   }
};
main(){
   vector<int> v1 = {1,0,1,0,1};
   Solution ob;
   cout << (ob.numSubarraysWithSum(v1, 2));
}

इनपुट

[1,0,1,0,1]

आउटपुट

4

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

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

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

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

  1. C++ में 0 योग के साथ सभी उप-सरणी मुद्रित करें

    इस समस्या में, हमें पूर्णांक मानों की एक सरणी दी जाती है और हमें इस सरणी से उन सभी उप-सरणी को प्रिंट करना होता है जिनका योग 0 के बराबर होता है। आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, Input: array = [-5, 0, 2, 3, -3, 4, -1] Output: Subarray with sum 0 is from 1 to 4. Subarray with