Cərgə ədədi bərabər olan elementlər cütünü tapın

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.
Əhəmiyyətli olan Sort () funksiyasıdır, O (NLogN) vaxtı aldıqları üçün Birləşdirmə və ya Heap sortunu istifadə etməliyik, yoxsa sort () STL funksiyasından istifadə edə bilərik. parametrləri ilə “sort (arr, arr + size)”

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.

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