Skip to content
Related Articles

Related Articles

Improve Article

Average of remaining elements after removing K largest and K smallest elements from array

  • Difficulty Level : Basic
  • Last Updated : 08 Apr, 2021

Given an array of N integers. The task is to find the average of the numbers after removing k largest elements and k smallest element from the array i.e. calculate the average value of the remaining N – 2K elements.

Examples: 

Input: arr = [1, 2, 4, 4, 5, 6], K = 2
Output: 4
Remove 2 smallest elements i.e. 1 and 2
Remove 2 largest elements i.e. 5 and 6
Remaining elements are 4, 4. So average of 4, 4 is 4.

Input: arr = [1, 2, 3], K = 3
Output: 0

Approach:  

  • If no. of elements to be removed is greater than no. of elements present in the array, then ans = 0.
  • Else, Sort all the elements of the array. Then, calculate average of elements from Kth index to n-k-1th index.

Below is the implementation of the above approach:  

C++




// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find average
double average(int arr[], int n, int k)
{
    double total = 0;
 
    // base case if 2*k>=n
    // means all element get removed
    if (2 * k >= n)
        return 0;
 
    // first sort all elements
    sort(arr, arr + n);
    int start = k, end = n - k - 1;
 
    // sum of req number
    for (int i = start; i <= end; i++)
        total += arr[i];
 
    // find average
    return (total / (n - 2 * k));
}
 
// Driver code
int main()
{
    int arr[] = { 1, 2, 4, 4, 5, 6 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 2;
 
    cout << average(arr, n, k) << endl;
 
    return 0;
}

Java




// Java implementation of the above approach
 
import java.io.*;
import java.util.*;
class GFG {
 
// Function to find average
static double average(int arr[], int n, int k)
{
    double total = 0;
 
    // base case if 2*k>=n
    // means all element get removed
    if (2 * k >= n)
        return 0;
 
    // first sort all elements
    Arrays.sort(arr);
    int start = k, end = n - k - 1;
 
    // sum of req number
    for (int i = start; i <= end; i++)
        total += arr[i];
 
    // find average
    return (total / (n - 2 * k));
}
 
// Driver code
 
 
    public static void main (String[] args) {
            int arr[] = { 1, 2, 4, 4, 5, 6 };
    int n = arr.length;
    int k = 2;
 
    System.out.println( average(arr, n, k));
     
}
}
// This code is contributed by anuj_67..

Python3




# Python3 implementation of the
# above approach
 
# Function to find average
def average(arr, n, k) :
    total = 0
 
    # base case if 2*k>=n
    # means all element get removed
    if (2 * k >= n) :
        return 0
 
    # first sort all elements
    arr.sort()
     
    start , end = k , n - k - 1
 
    # sum of req number
    for i in range(start, end + 1) :
        total += arr[i]
 
    # find average
    return (total / (n - 2 * k))
 
# Driver code
if __name__ == "__main__" :
 
    arr = [ 1, 2, 4, 4, 5, 6 ]
    n = len(arr)
    k = 2
 
    print(average(arr, n, k))
 
# This code is contributed by Ryuga

C#




// C# implementation of the above approach
 
using System;
public class GFG {
  
    // Function to find average
    static double average(int []arr, int n, int k)
    {
        double total = 0;
 
        // base case if 2*k>=n
        // means all element get removed
        if (2 * k >= n)
            return 0;
 
        // first sort all elements
        Array.Sort(arr);
        int start = k, end = n - k - 1;
 
        // sum of req number
        for (int i = start; i <= end; i++)
            total += arr[i];
 
        // find average
        return (total / (n - 2 * k));
    }
 
    // Driver code
 
 
        public static void Main() {
                int []arr = { 1, 2, 4, 4, 5, 6 };
        int n = arr.Length;
        int k = 2;
 
        Console.WriteLine( average(arr, n, k));
 
    }
}
//This code is contributed by 29AjayKumar

PHP




<?php
// Php implementation of the
// above approach
 
// Function to find average
function average($arr, $n, $k)
{
    $total = 0;
 
    // base case if 2*k>=n
    // means all element get removed
    if (2 * $k >= $n)
        return 0;
 
    // first sort all elements
    sort($arr) ;
     
    $start = $k ;
    $end = $n - $k - 1;
 
    // sum of req number
    for ($i = $start; $i <= $end; $i++)
        $total += $arr[$i];
 
    // find average
    return ($total / ($n - 2 * $k));
}
 
// Driver code
$arr = array(1, 2, 4, 4, 5, 6);
$n = sizeof($arr);
$k = 2;
 
echo average($arr, $n, $k);
 
// This code is contributed by Ryuga
?>

Javascript




<script>
 
// Javascript implementation of the above approach
 
// Function to find average
function average(arr, n, k)
{
    var total = 0;
     
    // Base case if 2*k>=n
    // means all element get removed
    if (2 * k >= n)
        return 0;
 
    // First sort all elements
    arr.sort();
    var start = k, end = n - k - 1;
 
    // Sum of req number
    for(i = start; i <= end; i++)
        total += arr[i];
 
    // Find average
    return (total / (n - 2 * k));
}
 
// Driver code
var arr = [ 1, 2, 4, 4, 5, 6 ];
var n = arr.length;
var k = 2;
 
document.write(average(arr, n, k));
 
// This code is contributed by aashish1995
 
</script>
Output: 
4

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :