কম্পিউটার

C++-এ সাবারের যোগফল K সমান


ধরুন আমাদের কাছে পূর্ণসংখ্যার একটি অ্যারে এবং একটি পূর্ণসংখ্যা k আছে, আমাদের মোট অবিচ্ছিন্ন সাবয়ারের সংখ্যা খুঁজে বের করতে হবে যার যোগফল k এর সমান। তাই যদি সংখ্যা অ্যারে হয় [1, 1, 1] এবং k হয় 2, তাহলে আউটপুট হবে 2।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি মানচিত্র সংজ্ঞায়িত করুন যাকে বলা হয় যোগফল, তাপমাত্রা :=0, যোগফল[0] :=1 এবং উত্তর :=0
  • এর জন্য আমি 0 থেকে অ্যারের আকারের পরিসরে
    • temp :=temp + n[i]
    • যদি যোগফলের k – temp থাকে, তাহলে
      • উত্তর :=ans + যোগফল[k - temp]
    • অর্থের মান [-temp] 1 দ্বারা বৃদ্ধি করুন
  • উত্তর ফেরত দিন

উদাহরণ(C++)

আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int subarraySum(vector<int>& n, int k) {
      unordered_map <int, int> sums;
      int temp = 0;
      sums[0] = 1;
      int ans =0;
      for(int i =0;i<n.size();i++){
         temp+= n[i];
         if(sums.find(k-temp)!=sums.end()){
            ans += sums[k-temp];
         }
         sums[-temp]++;
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,1,1};
   cout << (ob.subarraySum(v, 2));
}

ইনপুট

[1,1,1]
2

আউটপুট

2

  1. C++ এ সর্বাধিক যোগফল সার্কুলার সাবারে

  2. C++ এ সর্বাধিক সাবয়ারের সমষ্টি m মডিউল

  3. C++ এ উপসর্গ যোগ ব্যবহার করে O(n) তে সর্বাধিক সাবয়ারের যোগফল

  4. C++-এ সর্বোচ্চ যোগফল কঠোরভাবে বর্ধিত সাবাররে খুঁজুন