न्यूनतम और अधिकतम वेतन Leetcode समाधान को छोड़कर औसत वेतन


कठिनाई स्तर आसान
में अक्सर पूछा NetSuite
लेटकोड

समस्या का विवरण

समस्या में " औसत न्यूनतम और अधिकतम वेतन को छोड़कर "हमें एक वेतन सरणी दी गई है। जहां एरे में प्रत्येक तत्व विभिन्न कर्मचारियों के वेतन का प्रतिनिधित्व करता है। सरणी में प्रत्येक मान अद्वितीय है।

हमारा काम न्यूनतम और अधिकतम वेतन को छोड़कर कर्मचारी के औसत वेतन की गणना करना है।

उदाहरण

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 का मूल्य तीन से छोटा है तो औसत वेतन शून्य होगा और औसत वेतन होगा (कुल वेतन-न्यूनतम वेतन-अधिकतम वेतन) / (n-2)।
  4. हम 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 समाधान को छोड़कर औसत वेतन की जटिलता विश्लेषण

समय की जटिलता

उपरोक्त कोड की समय जटिलता है पर) क्योंकि हम वेतन सरणी को केवल एक बार ट्रेस कर रहे हैं। यहाँ n वेतन सरणी की लंबाई है।

अंतरिक्ष की जटिलता

उपरोक्त कोड की अंतरिक्ष जटिलता है ओ (1) क्योंकि हम उत्तर को संग्रहीत करने के लिए केवल एक चर का उपयोग कर रहे हैं।

संदर्भ