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

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


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

हल करने के चरण

  • ans := 0, j := 0 और n := सरणी का आकार सेट करें
  • i को 0 से n-1 तक लूप करें
    • यदि A[i] 0 है, तो k को 1 से घटाएं
    • जब तक j <= i और k < 0
      • यदि A[j] = 0, तो k को 1 से बढ़ाएं
      • j को 1 से बढ़ाएं
    • ans := max(i - j + 1, ans)
  • 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. भूलभुलैया III - C++ भूलभुलैया III - C++

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

  1. C++ में एक रेखा पर अधिकतम बिंदु C++ में एक रेखा पर अधिकतम बिंदु

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

  1. C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III) C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III)

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