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

ठीक k विषम संख्याओं वाला सबसे लंबा सब-अर्रे खोजें C++ में

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

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

  • max := 0, count := 0, और start := 0 आरंभ करें
  • i को 0 से n-1 तक के लिए निम्नलिखित करें
    • यदि arr[i] mod 2 शून्य नहीं है, तो count को 1 से बढ़ाएं
    • जब count > k और start <= i, तो निम्नलिखित करें
      • यदि arr[start] mod 2 शून्य नहीं है, तो count को 1 से घटाएं
      • start को 1 से बढ़ाएं
    • यदि count = k, तो
      • यदि max < (i - start + 1), तो max := (i - start + 1)
    • max वापस करें

उदाहरण

#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. - C++ में 2N संख्याओं का एक क्रमचय ढूंढें जिससे दिया गया व्यंजक ठीक 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 है। हमें दी गई सरणी में अधिकतम सन्निकट सम संख्याओं की संख्या ढूंढनी है। इसलिए यदि सरणी A = [1, 2, 3, 4, 6, 8, 7] की तरह है, तो गिनती 3 होगी। हम इसे आसानी से हल कर सकते हैं। हमें दो काउंट वेरिएबल चाहिए: एक max_current, और दूसरा max_till_now। यदि एक सम संख्या

  1. - C++ प्रोग्राम: n संख्याओं का GCD और LCM ज्ञात करना

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