Maksimum Ardıcıl On Leetcode Həlli

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon
alqoritmlər Geyim kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutionsBaxılıb 103

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Problem bəyanat

Maksimum Ardıcıl problemində ikili bir sıra verilir. Verilən massivdə mövcud olan maksimum ardıcıl sayını tapmaq məcburiyyətindəyik.
Giriş massivində yalnız 0 və 1 olacaqdır.

misal

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

Explanation:
İlk iki rəqəm və ya son üç rəqəm ardıcıl 1-dir.
Ardıcıl 1-lərin maksimum sayı 3-dür.

[0,1,0]
1

Explanation:
Ardıcıl 1-lərin maksimum sayı 1-dür.

Yanaşma

Bu problemi həll etmək üçün serialdakı indeksləri ikiyə bölə bilərik loop isə iç içə aşağıdakı alqoritmlə:

1. Keçid zamanı yenilənmiş maksimum ardıcıl 1s-i saxlayacaq dəyişən maksimum yaradın.
2. I indeksli bir dəyişən yaradın və başladın.
3. İndi a döngə zamanı i <massiv ölçüsünə qədər.
4. Döngə daxilində indiki indeksdəki ədədin 1 olub olmadığını yoxlayacağıq. 1 -ə bərabər deyilsə, sadəcə indeksi artırın. Əks təqdirdə, 1 -ə bərabərdirsə, yuva qurun döngə zamanı bir say dəyişənini yaradaraq və 0 ilə başlatın. Ardıcıl olaraq, iç içə olan ardıcıl 1s boyunca hərəkət edin döngə zamanı. yəni num [i] 1 -ə bərabər olarkən travers dizisi, aşağıdakı şəkildəki kimi ardıcıl 1 -lərin sayını artırmağa davam edin:

Maksimum ArdıcıllarPin
5. 0 və ya massivin sonu ilə qarşılaşdıqdan sonra, maksimum dəyişəni köhnə dəyərini count dəyişənində saxlanılan cari ardıcıl 1s sayı ilə müqayisə edərək yeniləyin.
6 sonra döngə zamanı maksimum dəyəri qaytarmağı tamamlayır.

Həyata keçirilməsi

Maksimum Ardıcıllar üçün Leitcode Həlli üçün C ++ Proqramı

#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

Maksimum Ardıcıllar üçün Leetcode Həlli üçün Java Proqramı

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

Maksimum Ardıcıl Şəxslər üçün Leetcode Həlli üçün Mürəkkəblik Analizi

Zamanın mürəkkəbliyi

O (N): Dizini başlanğıcdan son indeksə qədər gəzirik və hər bir göstəricini yalnız bir dəfə ziyarət edirik. Bu səbəbdən zaman mürəkkəbliyi O (N) xətti olacaqdır.

Kosmik Mürəkkəblik 

O (1): Əlavə yer istifadə etmirik, buna görə istifadə olunan yer sabitdir.

Crack Sistemi Dizayn Müsahibələri
Translate »