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

C++ . में अधिकतम लगातार वाले III

मान लीजिए कि हमारे पास 0s और 1s की एक सरणी A है, हम 0 से 1 तक K मान तक अपडेट कर सकते हैं। हमें सबसे लंबे (सन्निहित) सबअरे की लंबाई का पता लगाना होगा जिसमें केवल 1s हो। तो अगर ए =[1,1,1,0,0,0,1,1,1,1,0] और के =2, तो आउटपुट 6 होगा, इसलिए यदि हम 2 0 फ्लिप करते हैं, तो सरणी हो सकती है [1,1,1,0,0,1,1,1,1,1,1] की तरह, 1s के सबसे लंबे अनुक्रम की लंबाई 6 है।

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

  • उत्तर सेट करें:=0, j:=0 और n:=सरणी का आकार
  • मैं के लिए 0 से n - 1 की सीमा में
    • यदि A[i] 0 है, तो k को 1 से घटाएं
    • जबकि j <=i और k <0
      • अगर A[j] =0, तो k को 1 से बढ़ा दें
      • j को 1 से बढ़ाएं
    • उत्तर :=अधिकतम i – j + 1, ans
  • वापसी उत्तर

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int longestOnes(vector<int>& A, int k) {
      int ans = 0;
      int j = 0;
      int n = A.size();
      for(int i = 0; i < n; i++){
         if(A[i] == 0) k--;
         while(j <= i && k <0){
            if(A[j] == 0){
               k++;
            }
            j++;
         }
         ans = max(i - j + 1, ans);
      }
      return ans;
   }
};
main(){
   vector<int> v = {1,1,1,0,0,0,1,1,1,1,0};
   Solution ob;
   cout <<(ob.longestOnes(v, 3));
}

इनपुट

[1,1,1,0,0,0,1,1,1,1,0]
3

आउटपुट

10

  1. C++ . में भूलभुलैया III

    मान लीजिए कि खाली जगह और दीवारों के साथ एक भूलभुलैया है और उस भूलभुलैया में एक गेंद भी है। गेंद ऊपर (यू), नीचे (डी), बाएं (एल) या दाएं (आर) दिशाओं को लुढ़क कर खाली जगहों से जा सकती है, लेकिन यह दीवार से टकराने तक लुढ़कती रहती है। जब गेंद रुकती है, तो वह अगली दिशा चुन सकती है। उस भूलभुलैया में एक छेद

  1. सी ++ में एक लाइन पर मैक्स पॉइंट्स

    मान लीजिए कि हमारे पास 2D प्लेन है। हमें एक ही सीधी रेखा पर रहने वाले बिंदुओं की अधिकतम संख्या ज्ञात करनी है। तो अगर अंक इस तरह हैं - फिर 4 अंक होते हैं इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - n :=अंकों की संख्या, यदि n <3 है, तो n लौटाएं उत्तर :=2 मैं के लिए 1 से n - 1 की सीमा

  1. सी++ में सर्पिल मैट्रिक्स III

    मान लीजिए कि हमारे पास आर पंक्तियों और सी कॉलम के साथ एक 2 आयामी ग्रिड है, हम पूर्व की ओर (r0, c0) से शुरू करते हैं। यहां, ग्रिड का उत्तर-पश्चिम कोना पहली पंक्ति और स्तंभ पर है, और ग्रिड का दक्षिण-पूर्व कोना अंतिम पंक्ति और स्तंभ पर है। हम इस ग्रिड में हर स्थिति का दौरा करने के लिए एक दक्षिणावर्त सर