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.
Verilmiş giriş sayına bərabər olan massivdə cüt cəmi tapmaq üçün bir proqram yazın.
Verilən ədədə bərabər cəmi
[vc_row] [vc_column width = ”2/3 ″] [td_block_text_with_title custom_title =” Metod 1 [] [/ td_block_text_with_title] [/ vc_column] [/ vc_row]
Zamanın mürəkkəbliyi: O (NlogN)
Kosmik Mürəkkəblik: O (1)
Konsepsiya:
Deyək ki, aşağıda rəqəmlər var və cəmi 2-yə bərabər olan bir massivdən 17 ədəd tapmaq lazımdır
-1 5 7 -8 12 16 -30 -4
Və cəmi 17 olan bir cüt tapmaq lazımdır
Videonun altında cəmi verilən giriş nömrəsinə 17 bərabər olan bir sıra bir cüt ədəd tapmaq üçün alqoritmi izah edir
Sonra səmərəli yol aşağıda göstərilir
1. Rəqəmləri artan sırada yerləşdirin (Sırala)
2. Bir döngəni bu şəkildə işlədin:
- Deyək ki, bir nəfər massivin əvvəlində, ikinci şəxs sonda dayanır
- Durduqları nömrələri əlavə edirlər => -30 +16 = 14
- Əgər onların sayı verilmiş X rəqəminə bərabərdirsə, onda ləzzət alırlar
- Cəmi verilmiş saydan az olduqda, massivin başlanğıcında dayanan ilk şəxsdən sona doğru bir addım irəliləməsini xahiş edirlər, çünki düzgün getdiyi təqdirdə cəmi artır və nəticədə cəmi artır.
- Eynilə cəmi daha çox olarsa, sonunda adamdan bir addım əvvələ doğru hərəkət etməsi istənilir
- İnsanlar toqquşana qədər təkrarlayırıq, bundan sonra eyni cütlər əldə ediləcəkdir.
- Əgər belə bir cüt tapılmasa, hər ikisi kədərlənir.
Input: -3, -4, 10, 0, 3, -2, 15, 3
Cəmi: 7
Cavab: -3 və 10
C ++ dilində yuxarıdakı alqoritm kodu
#include <bits/stdc++.h> using namespace std; int main() { int arr[] = {-3,-4,10,0,3,-2,15,3}; int size_of_array = sizeof(arr)/sizeof(arr[0]); //RequiredSum is number to which the pair should sum to int RequiredSum = 7; sort(arr,arr + size_of_array); //sort the array int startIndex = 0 , endIndex = size_of_array - 1 , sum =0; //variables pointing on their respective indices and sum to store sum of the pair while(startIndex <endIndex) //We require a pair so 2 elements and hence both elements should be of different indices { sum = arr[startIndex] + arr[endIndex]; if( sum == RequiredSum) { cout << "The numbers are " << arr[startIndex] <<" and " << arr[endIndex] <<endl; return 0; } else if(sum < RequiredSum) //if sum is less then we need to increase the smaller one startIndex ++; else //if the sum if more we need to decrease the larger number endIndex --; } cout << "No such pair exists."; return 0; }
Yoxla
[vc_row] [vc_column width = ”2/3 ″] [td_block_text_with_title custom_title =” Metod 2 [] [/ td_block_text_with_title] [/ vc_column] [/ vc_row]
Zamanın mürəkkəbliyi - O (NlogN)
Kosmik Mürəkkəblik - O (N)
Konsepsiya:
Bir sıra içərisində rəqəmlər olduğunu söyləyək və cəmi 23 giriş nömrəsinə bərabər olan bir massivdən iki element toplusunu tapmalıyıq.
-1 5 7 -8 12 16 -30 -4
və cəmi 23 olan bir cüt tapmaq lazımdır
Bu konsepsiya cəmi saya bərabər olan elementlər cütünü tapmaq üçün Xəritəçəkmə yanaşmasına əsaslanır
1. Hər bir elementin əlavə olunduğu bir xəritə yaradın.
2. X-yi cəmləyən bir cütlük varsa, hər iki element xəritədə mövcuddur.
3. Beləliklə, massivi gəzirik və bunu edirik
- (X - indiki) elementinin xəritədə olub olmadığını tapın
- Əgər varsa nömrəni çap edin.
Bu məqsəd üçün STL xəritəsi məlumat quruluşundan istifadə edə bilərsiniz, yoxsa indeksləşdirmək üçün dizinin element elementinin özü olduğu bir sıra yarada bilərsiniz.
GÖZLƏNİLİR
Input: -3, -4, 10, 0, 3, -2, 15, 3
Cəmi: 7
Cavab: -3 və 10
C ++ dilində yuxarıdakı alqoritm kodu
#include <bits/stdc++.h> using namespace std; map <int,int> m; map<int,int>::iterator it; int main() { int arr[] = {-3,-4,10,0,3,-2,15,3}; int size_of_array = sizeof(arr)/sizeof(arr[0]); //cout << "Enter the number to which the pair should sum to"<<endl; //Let Sum = 7 int x = 7; //cin >> x; // the number to which the sum of pair of elements must be equal int x = 7; //cin >> x; // the number to which the sum of pair of elements must be equal for (int i = 0; i < size_of_array;++i) { //Scan and add elements into the map it = m.find(arr[i]); if(it == m.end()) m.insert(make_pair(arr[i],1)); //Add the element in the map and set the count to 1 that represents it is present } for (int i = 0; i < size_of_array;i++) { it = m.find((x - arr[i])); //If we have two numbers say m and n that sums to x then //if we have m and if we find n in the map then we got the numbers. if(it != m.end()) //If it exists then we got the pair { pair<int,int> p = *it; //Obtain the pair so as to reference the 2nd number cout << "The numbers are " << arr[i] <<" and " << p.first <<endl; return 0; } } cout << "No such pair exists."; return 0; }
Yoxla
Burada cəmi sayına bərabər olan elementlər cütünü tapmaq üçün iki alqoritmi müzakirə etdik. Bu texniki reportajlarda tez-tez verilən bir sualdır.
[vc_row] [vc_column width = ”2/3 ″] [td_block_text_with_title custom_title =" Nəticə "] [/ td_block_text_with_title] [/ vc_column] [/ vc_row]
Müsahibəçi əlavə yer istifadə etmək üçün yaxşıdırsa, bu sualı həll etmək üçün ən yaxşı seçim Metod 2-dir. Ancaq xəritəni istifadə etmək üçün əlavə yer istifadə etməyinizə icazə vermirsə, bu sualı həll etmək üçün ən yaxşı yoldur.
