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

सी++ में सतत सबअरे योग

मान लीजिए कि हमारे पास गैर-ऋणात्मक संख्याओं की एक सूची है और एक लक्ष्य पूर्णांक k है, तो हमें यह जांचने के लिए एक फ़ंक्शन लिखना होगा कि क्या सरणी में कम से कम 2 आकार का एक निरंतर उप-सरणी है जो k के गुणक तक है, n* तक का योग है। k जहां n भी एक पूर्णांक है। इसलिए यदि इनपुट [23,2,4,6,7], और k =6 जैसा है, तो परिणाम सही होगा, क्योंकि [2,4] आकार 2 का एक सतत उप-सरणी है और 6 तक का योग है। /पी>

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

  • मानचित्र बनाएं m, सेट करें m[0] :=-1 और योग :=0, n :=nums array का आकार
  • मैं के लिए 0 से n - 1 की सीमा में
    • योग :=योग + अंक[i]
    • यदि k शून्य नहीं है, तो योग :=योग mod k
    • यदि m का योग है, और i - m[sum]>=2, तो सही लौटें
    • यदि m का योग नहीं है, तो m[sum] सेट करें:=i
  • झूठी वापसी

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool checkSubarraySum(vector<int>& nums, int k) {
      unordered_map<int, int> m;
      m[0] = -1;
      int sum = 0;
      int n = nums.size();
      for(int i = 0; i < n; i++){
         sum += nums[i];
         if(k)
         sum %= k;
         if(m.count(sum) && i - m[sum] >= 2){
            return true;
         }
         if(!m.count(sum)) m[sum] = i;
      }
      return false;
   }
};
main(){
   vector<int> v = {23,2,4,6,7};
   Solution ob;
   cout << (ob.checkSubarraySum(v, 6));
}

इनपुट

[23,2,4,6,7]
6

आउटपुट

1

  1. सी++ में अधिकतम सबरे योग मॉड्यूलो एम

    इस समस्या में, हमें n आकार की एक सरणी और एक पूर्णांक m दिया जाता है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो C++ में अधिकतम सबअरे योग मॉड्यूल m ढूंढेगा। कार्यक्रम विवरण - यहां, हम सबएरे के सभी तत्वों के योग को m से विभाजित करके प्राप्त अधिकतम मान प्राप्त करेंगे। समस्या को समझने के लिए एक उदाहरण लेत

  1. C++ में उपसर्ग योग का उपयोग करते हुए O(n) में अधिकतम सबअरे योग

    समस्या कथन सकारात्मक और नकारात्मक पूर्णांकों की एक सरणी को देखते हुए, उस सरणी में अधिकतम सबअरे योग ज्ञात करें उदाहरण यदि इनपुट ऐरे − {-12, -5, 4, -1, -7, 1, 8, -3} है तो आउटपुट 9 है एल्गोरिदम इनपुट सरणी के उपसर्ग योग की गणना करें। प्रारंभ करें− min_prefix_sum =0, रेस =-अनंत i =0 से n के ल

  1. सी ++ में विभाज्य योग?

    यहाँ हम देखेंगे कि विभाज्य योग क्या है? n का विभाज्य योग n को छोड़कर n के सभी पूर्ण गुणनखंडों का योग है। उदाहरण के लिए, यदि संख्या 20 है, तो पूर्ण गुणनखंड (1, 2, 4, 5, 10) हैं। तो विभाज्य योग 22 है। एक दिलचस्प तथ्य यह है कि, यदि किसी संख्या का विभाज्य योग ही वह संख्या है, तो वह संख्या एक पूर्ण संख्