अधिकतम लगातारको लेन्सकोड समाधान


कठिनाई तह सजिलो
बारम्बार सोधिन्छ अमेजन
एरे

समस्या वक्तव्य

अधिकतम लगातार अनन्स समस्यामा बाइनरी एर्रे दिइन्छ। हामीले दिइएको एर्रेमा उपस्थित लगातार संख्याको अधिकतम संख्या फेला पार्नु पर्छ।
इनपुट एर्रेमा ० र १ मात्र समावेश हुन्छ।

उदाहरणका

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

व्याख्या:
पहिलो दुई अंक वा अन्तिम तीन अंकहरू लगातार १ हरू छन्।
लगातार १s को अधिकतम संख्या is हो।

[0,1,0]
1

व्याख्या:
लगातार १s को अधिकतम संख्या is हो।

दृष्टिकोण

यो समस्या समाधान गर्न हामी दुईमा एर्रेको सूचका through्कहरू मार्फत पुनरावृत्ति गर्न सक्छौं लूपको बखत नेस्टेड एल्गोरिदम अनुसरण गरेर:

१. चर अधिकतम सिर्जना गर्नुहोस् जुन ट्र्याभर्सिंगको क्रममा अपडेट गरिएको अधिकतम लगातार १s भण्डार गर्दछ।
२. पहिलो अनुक्रमणिकाको साथ एक भ्यारीएबल i सिर्जना र आरम्भ गर्नुहोस्।
Now. अब जबसम्म म <एर्रे आकार सम्म लूप चलाउनुहोला।
The. लुप भित्र हामी हेर्नेछौं कि वर्तमान सूचकांकमा नम्बर १ छ वा छैन। यदि १ बराबर छैन भने मात्र सूचकांक i लाई बढाउनुहोस्। अन्यथा यदि यो १ को बराबरी छ भने नेस्टेडको क्रममा लूप चलाउनुहोस् र काउन्ट भ्यारीएबल बनाएर ० मार्फत इनिसियलाइज गर्नुहोस्। त्यसपछि लिपको बखत नेस्टेडमा लगातार १ सेकेन्डको लागि एरे ट्र्यावर्स गर्नुहोस्। अर्थात् ट्र्याभ्रस एर्रे जबकि नम्बर [i] १ बराबर छ, साथै सँगसँगैको आंकडामा देखाइए अनुसार वर्तमान लगातार १ को गणना बढाउँदै गर्नुहोस्:

अधिकतम लगातार
5. एर्रेको ० वा अन्तको भेट भएपछि, यसको पुरानो मानको तुलनात्मक हिसाबले लगातारको १s गणना गणनामा भ्यारीएबलमा भण्डार गर्नुहोस्।
While. पछि लुपले अधिकतम मान फिर्ता गर्दछ।

कार्यान्वयन

C ++ अधिकतम लगातार लिनेकोड समाधानको लागि प्रोग्राम

#include <bits/stdc++.h>
using namespace std;

int findMaxConsecutiveOnes(vector<int>& nums) {

    int maximum=0;
    int i=0;

    while(i<nums.size())
    {
        int conOnes=0;
        while(i< nums.size() && nums[i]==1)
        {
            conOnes++;
            i++;
        }

        maximum=max(maximum,conOnes);
        i++;
    }

    return maximum; 
}

int main() 
{
    vector<int> nums={1,1,0,1,1,1};
    cout<<findMaxConsecutiveOnes(nums)<<endl;

  return 0; 
}
3

अधिकतम लगातार लेन्सकोड समाधानको लागि जाभा कार्यक्रम

import java.lang.*;

class MaxOnes
{  
    public static int findMaxConsecutiveOnes(int[] nums) 
    {
        int maximum=0;
        int i=0;

        while(i<nums.length)
        {
        int conOnes=0;
        while(i< nums.length && nums[i]==1)
        {
        conOnes++;
        i++;
        }

        maximum=Math.max(maximum,conOnes);

        i++;
        }

        return maximum; 

    }
    
    public static void main(String args[])
    {
        int nums[]={1,1,0,1,1,1};

        System.out.println(findMaxConsecutiveOnes(nums));
        
    }
}
3

अधिकतम लगातार लेन्स कोड समाधानको लागि जटिलता विश्लेषण

समय जटिलता

O (N): हामी सूचकांक सुरूदेखि अन्तिम अनुक्रमणिकामा एर्रे ट्राभर्स गर्दैछौं र प्रत्येक अनुक्रमणिका एक पटक मात्र भ्रमण गर्दछौं। तसर्थ समय जटिलता रैखिक O (N) हुनेछ।

ठाउँ जटिलता 

O (१): हामी कुनै थप ठाउँ प्रयोग गरिरहेका छैनौं, त्यसैले स्थानको उपयोग स्थिर छ।