최소 및 최대 급여 Leetcode 솔루션을 제외한 평균 급여

난이도 쉽게
자주 묻는 질문 넷스위트
알고리즘 코딩 인터뷰 인터뷰 준비 리트코드 LeetCodeSolutions조회수 99

시스템 설계 면접 질문 너무 개방적이어서 올바른 준비 방법을 알기가 너무 어렵습니다. 이제 구매 후 Amazon, Microsoft 및 Adobe의 디자인 라운드를 해독할 수 있습니다. 이 책은. 매일 수정 하나 디자인 질문 그리고 나는 당신이 디자인 라운드를 깨뜨릴 수 있다고 약속합니다.

문제 설명

문제에서” 평균 최소 및 최대 급여를 제외한 급여”급여 배열이 제공됩니다. 여기서 배열의 각 요소는 서로 다른 직원의 급여를 나타냅니다. 배열의 각 값은 고유합니다.

우리의 임무는 최소 및 최대 급여를 제외한 직원의 평균 급여를 계산하는 것입니다.

Salary= [8000,9000,2000,3000,6000,1000]
4750.0

설명 :

최소 및 최대 급여 Leetcode 솔루션을 제외한 평균 급여

주어진 급여 배열에서 9000은 최대 급여이고 1000은 최소 급여입니다. 우리는 제외하고 평균 급여를 찾아야하므로 최소 및 최대 이 값을 총 합계에 더하지 않습니다. 총합은 19000이므로 평균은 19000/4, 즉 4750입니다.

접근

이것은 기본적인 수학 문제입니다. 우리의 임무는 최소 및 최대 급여를 찾은 다음 나머지 급여의 평균을 찾는 것입니다. 다음 단계를 따릅니다.

  1. 최소 급여는 INT_MAX로, 최대 급여는 INT_MIN으로 초기화하십시오. 변수를 사용하여 급여 합계를 저장하므로 0으로 초기화합니다.
  2. 배열을 탐색하고 각 급여를 합계에 추가합니다. 한편, 최소 급여 및 최대 급여 값도 업데이트하십시오.
  3. n의 값이 2보다 작 으면 평균 급여는 XNUMX이되고 평균 급여는 (총 급여-최소 급여-최대 급여) / (n-XNUMX)가됩니다.
  4. 평균 급여가 두 배가 될 수 있으므로 (n-2)에 1.0을 곱합니다.

최소 및 최대 급여 Leetcode 솔루션을 제외한 평균 급여 코드

C ++ 코드

#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

자바 코드

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

최소 및 최대 급여 Leetcode 솔루션을 제외한 평균 급여의 복잡성 분석

시간 복잡성

위 코드의 시간 복잡성은 O (N) 급여 배열을 한 번만 탐색하기 때문입니다. 여기서 n은 급여 배열의 길이입니다.

공간 복잡성

위 코드의 공간 복잡성은 다음과 같습니다. O (1) 답을 저장하는 데 변수 만 사용하고 있기 때문입니다.

참조

균열 시스템 설계 인터뷰
Translate »