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

C++ में बिल्कुल k विषम संख्याओं वाली सबसे लंबी उप-सरणी खोजें

मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी है। समस्या सबसे लंबी उप-सरणी को खोजने की है जिसमें बिल्कुल k विषम संख्याएँ हैं। तो अगर ए =[2, 3, 4, 11, 4, 12, 7], और के =1, तो आउटपुट 4 होगा, उप-सरणी है [4, 11, 4, 12]

हम इसे स्लाइडिंग विंडो का उपयोग करके हल कर सकते हैं। कार्य नीचे जैसा है -

  • अधिकतम प्रारंभ करें:=0, गणना करें:=0, और प्रारंभ करें:=0
  • 0 से n-1 की सीमा में i के लिए, निम्न कार्य करें
    • अगर arr[i] mod 2 0 नहीं है, तो 1 से गिनती बढ़ाएं
    • गिनते समय> k और प्रारंभ करें <=i, निम्न कार्य करें
      • अगर arr[start] mod 2 0 नहीं है, तो गिनती में 1 की कमी करें
      • शुरुआत को 1 से बढ़ाएं
    • अगर गिनती =के, तो
      • यदि अधिकतम <(i - प्रारंभ + 1), तो अधिकतम :=(i - प्रारंभ + 1)
    • अधिकतम लौटाएं

उदाहरण

#include<iostream>
using namespace std;
int oddSubarrayMaxLength(int arr[], int n, int k) {
   int max_len = 0, count = 0, start = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] % 2 != 0)
         count++;
      while (count > k && start <= i)
         if (arr[start++] % 2 != 0)
            count--;
      if (count == k)
      if (max_len < (i - start + 1))
      max_len = i - start + 1;
   }
   return max_len;
}
int main() {
   int arr[] = {2, 3, 4, 11, 4, 12, 7};
   int n = sizeof(arr) / sizeof(arr[0]);
   int k = 1;
   cout << "Maximum Length is: "<< oddSubarrayMaxLength(arr, n, k);
}

आउटपुट

Maximum Length is: 4

  1. 2N संख्याओं का क्रमचय इस प्रकार ज्ञात कीजिए कि दिए गए व्यंजक का परिणाम C++ में ठीक 2K हो

    मान लीजिए कि हमारे पास दो पूर्णांक N और K हैं। हमें प्राकृतिक संख्याओं की 2N संख्या का पहला क्रमचय ज्ञात करना है, ताकि निम्नलिखित समीकरण संतुष्ट हो। $$\displaystyle\sum\limits_{i=1}^N\lvert A_{2i-1}-A_{2i}\rvert+\lvert \displaystyle\sum\limits_{i=1}^N A_{2i-1 }-A_{2i} \rvert=2K$$ K का मान N से कम

  1. C++ में अधिकतम सन्निहित सम संख्याओं की संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। हमें दिए गए सरणी में सन्निहित सम संख्याओं की अधिकतम संख्या ज्ञात करनी है। तो अगर एरे ए =[1, 2, 3, 4, 6, 8, 7] की तरह है, तो गिनती 3 होगी। हम इसे आसानी से हल कर सकते हैं। हमें दो गणना चर की आवश्यकता है एक है max_current, और दूसरा है max_till_now।

  1. सी++ प्रोग्राम एन नंबरों के जीसीडी और एलसीएम को खोजने के लिए

    यह n संख्याओं का GCD और LCM ज्ञात करने का कोड है। GCD या दो या अधिक पूर्णांकों का सबसे बड़ा सामान्य भाजक, जो सभी शून्य नहीं हैं, सबसे बड़ा धनात्मक पूर्णांक है जो प्रत्येक पूर्णांक को विभाजित करता है। जीसीडी को ग्रेटेस्ट कॉमन फैक्टर के रूप में भी जाना जाता है। दो संख्याओं का लघुत्तम समापवर्तक (LCM)