Mündəricat
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ük və az_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.