एरेको मीन केही एलिमेन्टस लीटकोड समाधान हटाए पछि


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

समस्या बयान

समस्यामा "केही एलिमेन्ट्स हटाए पछि एरेको मीन" हामीलाई एर्रे दिइन्छ। एर्रेको सबै तत्वहरू सकारात्मक पूर्णा positive्क हुन्। एर्रेको आकार २० को अधिक हुन्छ।

हाम्रो कार्य एर्रेको माध्य पत्ता लगाउनु हो बाहेक सबैभन्दा सानो%% तत्वहरू र उच्चतम%% तत्वहरू।

उदाहरणका

arr = [6,2,7,5,1,2,0,3,10,2,5,0,5,5,0,8,7,6,8,0]
4.000000

व्याख्या:

एरेको मीन केही एलिमेन्टस लीटकोड समाधान हटाए पछि

छवि क्रमबद्ध पछि दिइएको एरे देखाउँदछ। उच्चतम र न्यूनतम%% तत्वहरू हटाएपछि, बाँकी तत्त्वहरूको योग १5२ हो, र बाँकी तत्त्वहरूको कुल संख्या are 172 हो। त्यसैले औसत 36 हुन्छ।

केहि एलिमेन्ट्स लेटकोड समाधान हटाए पछि एरेको मीनको लागि दृष्टिकोण

यो एक सजिलो कार्यान्वयन समस्या हो। तल यस समस्यालाई समाधान गर्ने चरणहरू छन्:

  1. दिइएको एर्रे क्रमबद्ध गर्नुहोस् किनकि हामीलाई एर्रेबाट उच्चतम र न्यूनतम%% तत्वहरू ट्रिम गर्न आवश्यक छ।
  2. भेरिएबलमा एर्रेको लम्बाइ भण्डार गर्नुहोस्।
  3. दुई भ्यारीएबल घोषणा गर्नुहोस्:
    1. तत्वहरूको योग भण्डार गर्न।
    2. बीचमा तत्वहरूको संख्या भण्डारण गर्न।
  4. अब एउटा लूप चलाउनुहोस् र ट्रिम्ड एलिमेन्टहरूको योग फेला पार्नुहोस्।
    1. यसको लागि हामी लूपलाई एन * ०.०0.05 बाट आरम्भ गर्नेछौं जहाँ एन दिइएको एर्रेको लम्बाई हो र लूप एन * ०.0.95 till सम्म चल्नेछ।
  5. औसत गणना गर्नुहोस्।
    1.  यहाँ ध्यान दिनको लागि एउटा महत्त्वपूर्ण कुरा यो हो कि यसले डबल मान फिर्ता गर्नुपर्दछ, न कि पूर्णांक मान।

कार्यान्वयन

C ++ कोड एरेनको एरेनका लागि एलिमेन्टहरू हटाउँदा

#include <bits/stdc++.h> 
using namespace std; 
    double trimMean(vector<int>& arr) {
        sort(arr.begin(),arr.end());
        int n=arr.size();
        double sum=0,cnt=0;
        for(int i=(n*.05);i<n*.95;i++)
        { 
            sum+=arr[i];
            cnt++;
        }
        return sum/cnt;      
    }
int main() 
{ 
 vector<int> arr = {6,0,7,0,7,5,7,8,3,4,0,7,8,1,6,8,1,1,2,4,8,1,9,5,4,3,8,5,10,8,6,6,1,0,6,10,8,2,3,4}; 
 double ans=trimMean(arr);
 cout<<ans<<endl;
 return 0;
}
4.77778

केही एलिमेन्टहरू हटाए पछि एरेको मीनका लागि जाभा कोड

import java.util.Arrays; 
public class Tutorialcup {
    public static double trimMean(int[] arr) {
     Arrays.sort(arr);
     int n = arr.length;   
     double sum = 0d,cnt=0; 
     for(int i=n / 20;i<n - n / 20;i++)
        { 
            sum+=arr[i];
            cnt++;
        }
        return sum/cnt; 
    }
  public static void main(String[] args) {
        int [] arr = {6,0,7,0,7,5,7,8,3,4,0,7,8,1,6,8,1,1,2,4,8,1,9,5,4,3,8,5,10,8,6,6,1,0,6,10,8,2,3,4}; 
        double ans=trimMean(arr); 
        System.out.println(ans);
  }
}
4.77778

केही एलिमेन्टहरूको लेटकोड समाधान हटाए पछि एरेनको मीनको जटिलता विश्लेषण

समय जटिलता

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

ठाउँ जटिलता

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

सन्दर्भ