Ən Yaxın Böyük və Kiçik Elementi tapın

Problem bəyanat

Ən yaxın böyük və kiçik element problemini tapmaq üçün çeşidlənməmiş verdik array, bir sıra içərisində X sayından yalnız kiçik və X sayından daha böyük iki ədədi tapmalısınız.

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 ölçülü bir sıra olan ikinci sətir.

Çıxış formatı

Birinci tamın ən böyük elementi, ikinci tam ədədi isə ən yaxın kiçik elementi ifadə etdiyi iki sətri iki sətirdə ç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.

Ən Yaxın Böyük və Kiçik Elementi Axtarma Alqoritmi

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. Varsa daha böyük elementi çap edin x başqa çap “X mərtəbə tapılmadı” və əgər varsa, daha kiçik elementi çap edin x başqa çap “Heç bir tavan tapılmadı”.

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 Böyük və Kiçik Elementi Tapmaq üçün C ++ Proqramı

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int n,x;
  cin>>n>>x;
  long long int arr[n];
  for(int i=0;i<n;i++)
  {
      cin>>arr[i];
  }
  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)
    cout<<just_smaller<<endl;
  else
    cout<<"No floor of x found\n";
  if(just_greater != INT_MAX)
    cout<<just_greater<<endl;
  else
    cout<<"No Ceil of x found\n";
  return 0;
}

Ən Yaxın Böyük və Kiçik Elementi Tapmaq üçün Java Proqramı

import java.util.Scanner;

class sum
{
    public static void main(String[] args)  
    { 
        Scanner sr = new Scanner(System.in);
        int n = sr.nextInt();
        int x = sr.nextInt();
        int arr[] = new int[n-1];
        for(int i=0;i<n-1;i++)
        {
            arr[i] = sr.nextInt();
        }
        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)
          System.out.println(just_smaller);
        else
          System.out.println("No floor of x found");
        if(just_greater != 10000000)
          System.out.println(just_greater);
        else
          System.out.println("No Ceil of x found");
    }
}
8 0
-3 -4 10 0 3 -2 15 3
-2
3

Ən Yaxın Böyük və Kiçik Elementi Tapmaq üçün Mürəkkəblik Analizi

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.

References

Translate »