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

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

मान लीजिए हमारे पास एक बाइनरी सरणी है; अगर हम ज़्यादा से ज़्यादा एक 0 पर फ़्लिप कर सकते हैं, तो हमें इस सरणी में लगातार 1s की अधिकतम संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट [1,0,1,1,0] जैसा है, तो आउटपुट 4 होगा क्योंकि यदि हम पहले शून्य को फ्लिप करते हैं तो लगातार 1s की अधिकतम संख्या प्राप्त होगी। फ़्लिप करने के बाद, लगातार 1s की अधिकतम संख्या 4 होती है।

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

  • रिट:=1, एन:=अंकों का आकार

  • यदि नहीं n गैर-शून्य है, तो -

    • वापसी 0

  • जे:=0, शून्य:=0

  • इनिशियलाइज़ i:=0 के लिए, जब i

    • अगर nums[i] 0 के समान है, तो -

      • (शून्य को 1 से बढ़ाएं)

    • जबकि (j <=i और शून्य> 1), करें -

      • अगर nums[j] 0 के समान है, तो -

        • (शून्य को 1 से घटाएं)

      • (जम्मू को 1 से बढ़ाएं)

    • ret :=अधिकतम रिट और (i - j + 1)

  • वापसी रिट

उदाहरण

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

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

इनपुट

{1,0,1,1,1,0,1,1}

आउटपुट

6

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

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

  1. C++ में इनलाइन फंक्शन्स

    C++ इनलाइन फंक्शन एक शक्तिशाली अवधारणा है जिसे आमतौर पर कक्षाओं के साथ प्रयोग किया जाता है। यदि कोई फ़ंक्शन इनलाइन है, तो कंपाइलर उस फ़ंक्शन के कोड की एक प्रति प्रत्येक बिंदु पर रखता है जहां फ़ंक्शन को संकलन समय पर कहा जाता है। इनलाइन फ़ंक्शन में किसी भी परिवर्तन के लिए फ़ंक्शन के सभी क्लाइंट को पु

  1. C++ प्रोग्राम मैक्स हीप को लागू करने के लिए

    एक बाइनरी हीप एक पूर्ण बाइनरी ट्री है जो या तो मिन हीप या मैक्स हीप है। मैक्स बाइनरी हीप में, रूट की कुंजी बाइनरी हीप में मौजूद सभी कुंजियों के बीच अधिकतम होनी चाहिए। यह गुण बाइनरी ट्री में सभी नोड्स के लिए पुनरावर्ती रूप से सत्य होना चाहिए। मिन बाइनरी हीप मिनहीप के समान है। एल्गोरिदम max_heap के ल