Arrayı döndərin

Çətinlik səviyyəsi Mühit
Tez-tez soruşulur Amazon alma MakeMyTrip MAQ microsoft Kahin SAP SAP Laboratoriyaları Wipro
Geyim GörməmişBaxılıb 67

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.

Fırlatmaq array N ölçülü bir sıra verdiyimiz bir problemdir. Diziyi düzgün istiqamətdə döndərməliyik. Hər bir element massivin sağa və son elementinə bir mövqedə dəyişmə ilk mövqeyə gəlir. Beləliklə, K dəyəri verdik və K massivini sağa doğru dəyişməliyik, sonra son massivi çap etməliyik. Nümunə götürərək bütün elementləri sağa sürüşdürərək massivi necə döndərəcəyini görək.

Arrayı döndərinPin

Giriş Formatı

Verilən massivdə giriş massivindəki elementlərin sayını və sağa keçidlərin sayını göstərən iki tam dəyər N və K olan birinci sətir.

N tam ədədi olan giriş massivini ehtiva edən ikinci sətir.

Çıxış formatı

K sağ sürüşmə həyata keçirildikdən sonra son massivi ehtiva edən ilk sətir.

Məhdudiyyətlər

  • 1 <= N <= 100000
  • -10 ^ 9 <= A [i] <= 10 ^ 9
  • 1 <= k <= 10 ^ 9
8 4
1 5 9 6 5 4 2 7
2 7 1 5 9 6 5 4

Izahat

Əvvəlcə verilən massivdə bütün massivi tərsinə çeviririk. Ardından serialı tərsinə çevirir (K% N-1). Bundan sonra, qalan son elementləri dəyişdirdik və K sağ sürüşmədən sonra gələn son sıra əldə etdik.

Arrayı döndərinPin

Dönmə Array üçün Alqoritm

Step:1 Reverse all the array.
Step:2 Reverse first K%N elements.
Step:3 Reverse last N-K%N elements.
Step:4 Print the final array.

Rotate Array üçün tətbiqetmə

/*C++ Implementation of Rotate Array.*/ 
#include<bits/stdc++.h> 
using namespace std; 
int main() 
{ 
    /*input values.*/ 
    int n,k; 
    cin>>n>>k;
    vector<int> a;
    for(int i=0;i<n;i++)
    {
        int x;
        cin>>x;
        a.push_back(x);
    }
    reverse(a.begin(),a.end());
    reverse(a.begin(),a.begin()+k%n);
    reverse(a.begin()+k%n,a.end());
    for(int i=0;i<n;i++)
    {
        cout<<a[i]<<" ";
    }
    return 0; 
}
13 17
1 6 24 65 13 -234 0 12 54 3 -1 6 3
3 -1 6 3 1 6 24 65 13 -234 0 12 54

Zamanın mürəkkəbliyi

O (N) burada N giriş massivinin ölçüsüdür. Burada ədədi tərs çevirmək üçün xətti vaxt alan əks funksiyanı istifadə edirik. Burada maksimum bütün giriş massivini tərsinə çeviririk. Beləliklə, maksimum vaxt mürəkkəbliyimiz O (N) olacaqdır.

Kosmik Mürəkkəblik

O (1) çünki burada əlavə yerdən istifadə etmirik. Ədədi tərs çevirmək üçün O (1) boşluğu alan tərs funksiyanı istifadə edirik.

References

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