Ən yaxın və daha çox sayın cəmi

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

Bu sualda ən kiçik və daha çox say probleminin cəmini tapın, çeşidlənməmiş verdik array, bir sıra içərisində X sayından yalnız kiçik və X rəqəmindən daha böyük iki ədədi tapmalı və sonra bu iki ədədi əlavə etməlisən.

The Mərtəbə ən yaxın kiçik elementi və Tavan ən yaxın elementi bildirir.

Giriş Formatı

İki tam dəyər N və X olan birinci sətir.

Ən yaxın kiçik və daha çox sayın cəmi olan ikinci sətir.

Çıxış formatı

Ən kiçik və daha çox sayın cəmini çap edin. X-dən böyük bir rəqəm yoxdursa, ilk tamın yerində “Heç bir mərtəbə tapılmadı” yazdırın. X-dən kiçik bir rəqəm yoxdursa, ikinci ədədin yerinə “Heç bir tavan tapılmadı” yazdırın.

Məhdudiyyətlər

  • 1 <= N <= 100000
  • -1e9 <= X <= 1e9
  • -1e9 <= a [i] <= 1e9 burada a [i] verilmiş massivin elementini bildirir.

Alqoritm

1. İki dəyişəni başladın daha böyükaz_sekiller sırasıyla çox böyük və kiçik dəyərlə.

2. Dizini aşağıdakı kimi döndərin:

  • Massiv elementi daha böyükdürsə x lakin daha kiçikdir daha böyük sonra just_greater = arr [i]
  • Əgər massiv elementi daha kiçikdirsə x lakin daha böyükdür az_sekiller sonra just_smaller = arr [i]

3. Ən yaxın olan və daha çox sayın cəmini çap edin.

Qeyd: Sadəcə bir sıra içərisində ikinci minimum və maksimumun tapılması ilə əlaqədar bir istinad nömrəsinə sahib bir dəyişiklik ilə dəyişdirilməsidir.

Həyata keçirilməsi

Ən yaxın kiçik və daha çox sayın cəmi üçün C ++ proqramı

#include <bits/stdc++.h>

using namespace std;
int main() {
    cout << "Enter Count ";
    int n, x;
    cin >> n >> x;
    cout << "Count is " << n;
    cout << "Number is " << x;
    long long int arr[n];
    cout << "Enter Numbers ";
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    cout << "Output is ";
    int just_greater = INT_MAX, just_smaller = INT_MIN;
    for (int i = 0; i < n; i++) {
        //if element is greater than x but smaller than present just_greater
        if (arr[i] > x and arr[i] < just_greater)
            just_greater = arr[i];

        //if element is Smaller than x but smaller than present just_smaller
        if (arr[i] < x and just_smaller < arr[i])
            just_smaller = arr[i];
    }
    if (just_smaller == INT_MIN)
        just_smaller = 0;
    if (just_greater == INT_MAX)
        just_greater = 0;
    cout << just_smaller + just_greater;
    return 0;
}

Ən yaxın kiçik və daha çox sayın cəmi üçün Java Proqramı

import java.util.Scanner;
public class Main
{
  
  public static void main(String[] args)  
    { 
        Scanner sr = new Scanner(System.in);
        System.out.println("Enter Count ");
        int n = sr.nextInt();
        int x = sr.nextInt();
        System.out.println("Count is " + n);
        System.out.println("Number is " + x);
        int arr[] = new int[n];
        System.out.println("Enter Numbers ");
        for(int i=0;i<n;i++)
        {
            arr[i] = sr.nextInt();
        }
        System.out.println("Output is ");
        int just_greater=10000000,just_smaller=-10000000;
        for(int i=0; i<n; i++)
        {
          //if element is greater than x but smaller than present just_greater
          if(arr[i] > x && arr[i] < just_greater)
            just_greater = arr[i];
          //if element is Smaller than x but smaller than present just_smaller
          if(arr[i] < x && just_smaller < arr[i])
            just_smaller = arr[i];
        }   
        if(just_smaller == -10000000)
          just_smaller = 0;
        if(just_greater == 10000000)
          just_greater = 0;
        System.out.println(just_smaller + just_greater);
    }
}

 

Enter Count 
8 0
Count is 8
Number is 0
Enter Numbers 
-3 -4 10 0 3 -2 15 3
Output is 
1

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (N), burada N verilmiş massivin ölçüsüdür. Yalnız bütün massivi gəzirik və ən yaxın X və daha kiçik elementi saxlayırıq.

Kosmik Mürəkkəblik

O (1) burada minimum və maksimum şərtlərdən sadəcə istifadə edirik.

nəticə

Aşağıdakı kimi suallarınız üçün eyni həll yolu istifadə edilə bilər

  • massiv əməliyyatları ən yaxın və daha böyük sayın cəmi
  • ən kiçik və daha çox saylı proqramın cəmi
  • massivin hər bir elementi üçün ən kiçik və ən yaxın sayların cəmini tapın.
  • javada ən kiçik və daha çox sayın cəmi

References

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