Əks tam

Çətinlik səviyyəsi Asan
Tez-tez soruşulur MakeMyTrip MAQ
Riyaziyyat SimBaxılıb 98

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

“Reverse Integer” problemi sizə qaytarılacaq sayını ehtiva edən bir tam dəyişən n verildiyini bildirir. Rəqəmlərini dəyişdirmək üçün bir proqram yazın.

Geri qayıtmaq tam fərqli bir şey deyil bir simli geri. Bir ədədi asanlıqla bir sətirə çevirə bilərik. Və sonra bir simli tərs etmək üçün müxtəlif metodlardan istifadə edin. Ancaq bunu etmək əvəzinə tapşırığımızı tamamlamaq üçün başqa bir metod var. Çünki bir tam ədədin sətrə ilk çevrilməsi yükdür. Beləliklə, bu həllərə baxmaq əvəzinə. Yeni üsula baxacağıq.

misal

Əks tamPin

13567
76531

İzahat: Verilən ədədin hər rəqəminin tərsinə salınması barədə. Bu, son rəqəmi rəqəmin birinci rəqəmi ilə əvəz etmək və ilk rəqəmi son rəqəm ilə əvəz etməkdir. Sayıların hər bir rəqəmini oxşar şəkildə işləyirik. Nəticədə 76531 alırıq.

578
875

İzahat: Daha rəsmi olaraq hər rəqəmə bir indeks nömrəsi versək nə edəcəyik. 0 əsaslı indeksləşdirmə hesab etdik və nömrəni n olaraq çağırırıq. Sonra n [0] n [2] və n [2] n [0] səviyyəsində dəyişdiririk. Sonra proses ortaya qədər təkrarlanır. Bu, girişin tərsinə çevrilməsinin yollarından biridir.

Təkrarlanan metod

Tamsayı təkrarən tərsinə çevirmək üçün alqoritm

1. Initialize an integer n containing the number to be reversed.
2. Create a function to reverse a number which accepts an integer variable as it's a parameter.
3. Initialize an integer variable rev as 0 to store the reverse of the given number.
4. After that, traverse through the given number. While the given number is greater than 0,  multiply the integer rev with 10 and add it to the last digit of the given number and store it in the variable rev itself. Update the given number as the number itself divide by 10 to discard the last digit.
5. Finally, return the variable containing the reversed number and print it.

Kodu

Təkrar C ++ Tamsayı əks proqramı

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

int revDigits(int n){ 
    int rev = 0; 
    while(n > 0){ 
        rev = rev*10 + n%10; 
        n = n/10; 
    }
    return rev; 
} 
int main(){ 
    int n = 4562; 
    cout<<revDigits(n);
    return 0; 
} 
2654

Tamsayı əks etmək üçün təkrarlanan Java Proqramı

class reverse{ 
    static int revDigits(int n){ 
        int rev = 0; 
        while(n > 0){ 
            rev = rev*10 + n%10; 
            n = n/10; 
        } 
        return rev; 
    } 
    public static void main (String[] args){ 
        int n = 4562; 
        System.out.println(revDigits(n)); 
    } 
}
2654

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (log (n)) burada n - verilən tam ədədə rəqəmlərin sayı. Çünki bir ədədə yalnız log (n) rəqəmi var n.

Kosmik Mürəkkəblik

O (1) çünki daimi məkandan istifadə edirdik.

Rekursiv metod

Tamsayı rekursiv olaraq tərs çevirmək üçün alqoritm

1. Initialize an integer n containing the number to be reversed.
2. Create a function to reverse a number which accepts an integer variable as it's a parameter.
3. Initialize an integer variable rev as 0 to store the reverse of the given number.
4. Similarly, initialize an integer variable pos as 1 to store the base position of the digit.
5. After that, check if the given number is greater than 0, call the function itself with a given number divided by 10 as it's a parameter. Add the last digit of the given number multiplied by the variable pos in variable rev. Update the variable pos as the multiplication of 10 with variable pos itself.
6. Finally, return the variable containing the reversed number and print it.

Kodu

Tamsayı geri çevirmək üçün rekursiv C ++ proqramı

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

int revDigits(int n){ 
    static int rev = 0, pos = 1; 
    if(n > 0){ 
        revDigits(n/10); 
        rev += (n%10)*pos; 
        pos *= 10; 
    } 
    return rev; 
}  
int main(){ 
    int n = 4562; 
    cout<<revDigits(n); 
    return 0; 
} 
2654

Tamsayı geri çevirmək üçün rekursiv Java Proqramı

class reverse{ 
    static int rev = 0, pos = 1;
    static int revDigits(int n){ 
        if(n > 0){ 
            revDigits(n / 10); 
            rev += (n % 10) * pos; 
            pos *= 10; 
        } 
        return rev; 
    } 
    public static void main (String[] args){ 
        int n = 4562; 
        System.out.println(revDigits(n)); 
    } 
}
2654

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (log (n)) burada n - verilən tam ədədə rəqəmlərin sayı. Çünki bir ədədə yalnız log (n) rəqəmi var n.

Kosmik Mürəkkəblik

O (1) çünki daimi məkandan istifadə edirdik.

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