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

C++ में नाइस सबएरे की संख्या गिनें


मान लीजिए कि हमारे पास पूर्णांक संख्याओं की एक सरणी है और एक पूर्णांक k है। एक सबअरे को अच्छा सबअरे के रूप में जाना जाता है यदि उस पर k विषम संख्याएँ हों। हमें अच्छे उप-सरणियों की संख्या ज्ञात करनी है। तो यदि सरणी [1,1,2,1,1] है, और k =3 है, तो आउटपुट 2 होगा, क्योंकि उप-सरणी [1,1,2,1] और [1,2,1] हैं ,1]

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

  • उत्तर:=0, n:=अंक सरणी का आकार
  • बाएं:=0 और दाएं:=0, और गिनती:=0
  • एक सरणी को विषम परिभाषित करें, इसे अंकों में मौजूद सभी विषम मानों से भरें
  • यदि विषम सरणी की लंबाई>=k है, तो
    • के लिए i 0 है और j रेंज k-1 से विषम -1 के आकार में है, i और j को 1 से बढ़ाएं
      • बाएं:=विषम[i] + 1 यदि i =0, अन्यथा विषम[i] - विषम[i - 1]
      • दाएं:=विषम[j] यदि विषम का आकार – 1 =j, अन्यथा विषम[j + 1] – विषम[j]
      • उत्तर:=उत्तर + बाएँ * दाएँ
  • वापसी उत्तर

उदाहरण(C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int numberOfSubarrays(vector<int>& nums, int k) {
      int ans = 0;
      int n = nums.size();
      int left = 0;
      int right = 0;
      int cnt = 0;
      vector <int> odd;
      for(int i = 0; i < n; i++){
         if(nums[i] % 2 == 1)odd.push_back(i);
      }
      if(odd.size()>=k){
         for(int i = 0, j = k-1; j < odd.size(); i++, j++){
            int left = i==0?odd[i]+1: odd[i] - odd[i-1];
            int right = j==odd.size()-1 ?n-odd[j] : odd[j+1] - odd[j];
            ans += left * right;
         }
      }
      return ans;
   }
};
main(){
   vector<int> v = {1,1,2,1,1};
   Solution ob;
   cout <<ob.numberOfSubarrays(v, 3);
}

इनपुट

[1,1,2,1,1]
3

आउटपुट

2

  1. C++ में अंकगणित संख्या

    अंकगणितीय संख्या एक ऐसी संख्या है जिसमें सभी धनात्मक भाजक का औसत एक पूर्णांक होता है अर्थात संख्या n के लिए यदि भाजक की संख्या भाजक के योग को विभाजित कर सकती है तो n एक अंकगणितीय संख्या है। आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, Input : n = 6 Output : YES Explanation : Divisor

  1. C++ में CHAR_BIT

    CHAR_BIT चार में बिट्स की संख्या है। इसे C++ भाषा में “limits.h” हेडर फाइल में घोषित किया गया है। यह 8-बिट प्रति बाइट का होता है। यहाँ C++ भाषा में CHAR_BIT का एक उदाहरण दिया गया है, उदाहरण #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a

  1. पायथन में अच्छे उपसरणियों की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास nums नामक एक सरणी है और दूसरा मान k है। हमें अच्छे उप-सरणियों की संख्या ज्ञात करनी है। एक सबअरे को अच्छा सबअरे कहा जाता है यदि उस पर k विषम संख्याएँ हों। इसलिए, यदि इनपुट nums =[1,1,2,1,1], k =3 जैसा है, तो आउटपुट 2 होगा क्योंकि दो उप-सरणी हैं [1,1,2,1] और [1,2 ,1,1]. इसे हल