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.
Mündəricat
Problem bəyanat
Problemdə ” orta Minimum və maksimum əmək haqqı xaric olan əmək haqqı ”mövzusunda bizə bir əmək haqqı seriyası verilir. massivdəki hər elementin fərqli işçilərin əmək haqqını təmsil etdiyi yer. Dizidəki hər bir dəyər unikaldır.
Bizim vəzifəmiz, minimum və maksimum əmək haqqı xaricində işçinin orta maaşını hesablamaqdır.
misal
Salary= [8000,9000,2000,3000,6000,1000]
4750.0
Explanation:
Verilən maaş massivində 9000 maksimum əmək haqqı və 1000 minimum əmək haqqıdır. Bunun xaricində orta əmək haqqını tapmaq lazım olduğu üçün minimum və maksimum əmək haqqı, bu dəyərləri ümumi məbləğə əlavə etməyəcəyik. Ümumi məbləğ 19000, ortalama 19000 olan 4/4750 olduğu üçün XNUMX/XNUMX-dir.
Yanaşma
Bu əsas riyaziyyat problemidir. Bizim vəzifəmiz minimum və maksimum əmək haqqını tapmaq, sonra qalan əmək haqqının ortalamasını tapmaqdır. Bu addımları izləyəcəyik:
- Minimum əmək haqqını INT_MAX ilə, maksimum əmək haqqını INT_MIN ilə başlayın. Əmək haqqı məbləğini saxlamaq üçün bir dəyişən istifadə edəcəyik, buna görə 0 ilə başlayın.
- Dizini keçin və hər əmək haqqını cəminə əlavə edin. Bu vaxt minimum əmək haqqı və maksimum əmək haqqının dəyərini də yeniləyin.
- N-in dəyəri üçdən kiçikdirsə, orta əmək haqqı sıfıra bərabərdir, əks halda orta əmək haqqı (ümumi əmək haqqı-minimum əmək haqqı-maksimum əmək haqqı) / (n-2) olacaqdır.
- (N-2) 1.0 ilə çoxalacağıq, çünki orta əmək haqqı ikiqat dəyər ola bilər.
Minimum və Maksimum Maaş Leetcode Həlli istisna olmaqla Orta Əmək haqqı kodu
C ++ kodu
#include <bits/stdc++.h> using namespace std; double average(vector<int>& salary) { int n=salary.size(); int mn=INT_MAX,mx=INT_MIN,sum=0; for(int i=0;i<n;i++) { sum=sum+salary[i]; mn=min(mn,salary[i]); mx=max(mx,salary[i]); } double ans=(sum-mn-mx)/((n-2)*1.0); if(n>2) return ans; else return 0; } int main() { vector<int> arr = {8000,9000,2000,3000,6000,1000}; cout<<average(arr)<<endl; return 0; }
4750.0
Java kodu
import java.util.Arrays; public class Tutorialcup { public static double average(int[] salary) { int n=salary.length; int mn=Integer.MAX_VALUE,mx=Integer.MIN_VALUE,sum=0; for(int i=0;i<n;i++) { sum=sum+salary[i]; mn=Math.min(mn,salary[i]); mx=Math.max(mx,salary[i]); } double ans=(sum-mn-mx)/((n-2)*1.0); if(n>2) return ans; else return 0; } public static void main(String[] args) { int [] arr = {8000,9000,2000,3000,6000,1000}; double ans= average(arr); System.out.println(ans); } }
4750.0
Minimum və Maksimum Maaş Leetcode Çözümünü çıxmaqla Orta Əmək haqqının mürəkkəbliyi təhlili
Zaman mürəkkəbliyi
Yuxarıdakı kodun zaman mürəkkəbliyi O (n) çünki biz yalnız bir dəfə maaş seriyasından keçirik. Burada n əmək haqqı massivinin uzunluğu.
Kosmik mürəkkəblik
Yuxarıdakı kodun kosmik mürəkkəbliyi O (1) çünki cavabı saxlamaq üçün yalnız dəyişəndən istifadə edirik.
