მასივის საშუალო ზოგიერთი ელემენტის ამოღების შემდეგ Leetcode Solution


Რთული ტური Easy
ხშირად ეკითხებიან Google
Array

პრობლემის განცხადება

პრობლემში ”მასივის საშუალო გარკვეული ელემენტების ამოღების შემდეგ” მოცემულია მასივი. მასივის ყველა ელემენტი არის დადებითი მთელი რიცხვი. მასივის ზომა 20-ის ჯერადია.

ჩვენი ამოცანაა იპოვოთ მასივის საშუალო მნიშვნელობა გარდა ყველაზე მცირე 5% ელემენტები და ყველაზე მაღალი 5% ელემენტები.

მაგალითი

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

განმარტება:

მასივის საშუალო ზოგიერთი ელემენტის ამოღების შემდეგ Leetcode Solution

სურათზე მოცემულია მოცემული მასივი დახარისხების შემდეგ. ყველაზე მაღალი და ყველაზე დაბალი 5% ელემენტების ამოღების შემდეგ, დარჩენილი ელემენტის ჯამია 172, ხოლო დარჩენილი ელემენტების საერთო რაოდენობაა 36. ასე რომ, საშუალო ხდება 4.77778.

მიახლოება მასივის მნიშვნელობასთან ზოგიერთი ელემენტის ამოღების შემდეგ Leetcode ამოხსნა

ეს მარტივი განხორციელების პრობლემაა. ქვემოთ მოცემულია ნაბიჯები ამ პრობლემის გადასაჭრელად:

  1. დალაგეთ მოცემული მასივი, რადგან მასივიდან უნდა მოვიჭრათ ყველაზე მაღალი და ყველაზე დაბალი 5% ელემენტები.
  2. შეინახეთ მასივის სიგრძე ცვლადში.
  3. გამოაცხადეთ ორი ცვლადი:
    1. ელემენტების ჯამის შესანახად.
    2. ელემენტების რაოდენობის შესანახად.
  4. ახლა გაუშვით მარყუჟი და იპოვეთ დამსხვრეული ელემენტების ჯამი.
    1. ამისათვის ჩვენ დავიწყებთ მარყუჟის ინიციალიზაციას n * 0.05 – დან, სადაც n მოცემული მასივის სიგრძეა და ციკლი გაგრძელდება n * 0.95 – მდე.
  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

მასივის საშუალო სირთულის ანალიზი ზოგიერთი ელემენტის Leetcode ამოხსნის ამოღების შემდეგ

დროის სირთულე

ზემოთ მოცემული კოდის სირთულეა ო (ნლოგნი) რადგან ჩვენ ვალაგებთ მოცემულ მასივს. აქ n მოცემული მასივის სიგრძეა.

კოსმოსური სირთულის

ზემოთ მოცემული კოდის სივრცის სირთულეა O (1) რადგან პასუხის შესანახად ვიყენებთ მხოლოდ ცვლადს.

ლიტერატურა