न्यूनतम र अधिकतम तलब Leetcode समाधान बाहेकको औसत तलब


कठिनाई तह सजिलो
बारम्बार सोधिन्छ नेटसुट
LeetCode

समस्या बयान

समस्यामा " औसत न्यूनतम र अधिकतम तलब छोडेर तलब ”हामीलाई तलब एर्रे दिइन्छ। जहाँ एर्रेमा प्रत्येक तत्व विभिन्न कर्मचारीहरूको तलब प्रतिनिधित्व गर्दछ। एर्रेमा प्रत्येक मान अद्वितीय छ।

हाम्रो काम भनेको कर्मचारीको न्यूनतम र अधिकतम तलब बाहेकको औसत तलब गणना गर्नु हो।

उदाहरणका

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

व्याख्या:

न्यूनतम र अधिकतम तलब Leetcode समाधान बाहेकको औसत तलब

दिइएको तलब एर्रेमा 9000 ००० अधिकतम तलब र १००० न्यूनतम तलब हो। जस्तो कि हामीले बाहेकको औसत तलब पाउन आवश्यक छ न्यूनतम र अधिकतम तलब त हामी यी मानहरु कुल योग जोड्न छैन। कुल योग १ 19000००० हो त्यसैले औसत १ 19000०००/4 छ जुन 4750 XNUMX० हो।

दृष्टिकोण

यो आधारभूत गणितको समस्या हो। हाम्रो काम भनेको न्यूनतम र अधिकतम तलब फेला पार्नु हो बाँकी तलबको औसत पत्ता लगाउनु। हामी यी चरणहरू अनुसरण गर्नेछौं:

  1. INT_MAX को साथ न्यूनतम तलब सुरु गर्नुहोस्, INT_MIN संग अधिकतम तलब। हामी एउटा भ्यारीएबल भण्डारको भण्डारमा प्रयोग गर्न सक्दछौं त्यसैले यसलाई ० को साथ आरम्भ गर्नुहोस्।
  2. एर्रे पार गर्नुहोस् र योगमा प्रत्येक वेतन थप्नुहोस्। यसैबीच, न्यूनतम तलब र अधिकतम तलबको मान पनि अपडेट गर्नुहोस्।
  3. यदि n को मान तीन भन्दा सानो छ भने औसत तलब शून्य हुन्छ अन्य औसत तलब हुनेछ (कुल तलब-न्यूनतम तलब-अधिकतम तलब) / (n-2)।
  4. हामी १.० को साथ गुणा (n-२) गर्नेछौं किनभने औसत तलब डबल मान हुन सक्छ।

न्यूनतम र अधिकतम तलब लिटकोड समाधान बाहेक औसत तलबको लागि कोड

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

न्यूनतम र अधिकतम तलब लीटकोड समाधान बाहेक औसत तलबको जटिलता विश्लेषण

समय जटिलता

माथिको कोडको समय जटिलता हो ऊ) किनकि हामी एक पटक मात्र तलब एर्रे पार गर्दैछौं। यहाँ एन तलब एरे को लम्बाई छ।

ठाउँ जटिलता

माथिको कोडको स्पेस जटिलता हो O (१) किनभने हामी उत्तरहरू भण्डारण गर्नका लागि मात्र एउटा चल प्रयोग गरिरहेका छौं।

सन्दर्भ