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

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


मान लीजिए हमारे पास इंटीजर्स का एक ऐरे nums और एक इंटीजर k है। एक सबएरे को नाइस सबएरे के रूप में जाना जाता है यदि उसमें k ऑड नंबर हैं। हमें नाइस सब-एरे की संख्या ढूंढनी है। यदि ऐरे [1,1,2,1,1] है, और k = 3, तो आउटपुट 2 होगा, क्योंकि सबएरे [1,1,2,1], और [1,2,1,1] हैं।

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

  • ans := 0, n := nums ऐरे का आकार
  • left := 0 और right := 0, और count := 0
  • odd नामक एक ऐरे परिभाषित करें, इसे nums में मौजूद सभी ऑड वैल्यूज़ से भरें
  • यदि odd ऐरे की लंबाई >= k है, तो
    • i 0 है और j के लिए k - 1 से odd के आकार - 1 तक की रेंज में, i और j को 1 से बढ़ाएं
      • left := odd[i] + 1 यदि i = 0, अन्यथा odd[i] - odd[i - 1]
      • right := odd[j] यदि odd का आकार - 1 = j, अन्यथा odd[j + 1] - odd[j]
      • ans := ans + left * right
  • ans लौटाएं

उदाहरण (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++ में अंकगणितीय संख्या (Arithmetic Number)

    अंकगणितीय संख्या क्या है? एक संख्या जिसके सभी धनात्मक भाजकों का औसत एक पूर्णांक हो। अर्थात, भाजकों का योग भाजकों की संख्या से विभाज्य हो। उदाहरण: n = 6 भाजक: 1, 2, 3, 6 योग = 12, भाजकों की संख्या = 4 12/4 = 3 (पूर्णांक) → अंकगणितीय संख्या है एल्गोरिदम भाजकों का योग निकालें भाजकों की संख्या गिन

  1. - C++ में CHAR_BIT

    CHAR_BIT क्या है? CHAR_BIT एक बाइट में बिट्स की संख्या दर्शाता है। <climits> या <limits.h> हेडर में परिभाषित। आमतौर पर 8 बिट्स प्रति बाइट होता है। C++ प्रोग्राम उदाहरण #include <bits/stdc++.h> using namespace std; int main() { int x = 28; int total_bits = CHAR_BIT * size

  1. - पायथन में नाइस सबएरे की संख्या गिनने का प्रोग्राम

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