📜  K个附加整数后的中位数

📅  最后修改于: 2021-05-04 20:51:33             🧑  作者: Mango

给定一个由n个整数组成的数组。我们可以在数组中添加k个其他整数,然后找到所得数组的中位数。我们可以选择要添加的任何k个值。
限制条件:

k < n
n + k is always odd.

例子 :

Input : arr[] = { 4, 7 }
         k = 1 
Output : 7
Explanation : One of the possible solutions 
is to add 8 making the array [4, 7, 8], whose
median is 7

Input : arr[] = { 6, 1, 1, 1, 1 }
         k = 2
Output : 1
Explanation : No matter what elements we add 
to this array, the median will always be 1

我们首先以递增顺序对数组进行排序。由于k的值小于n且n + k始终为奇数,因此我们始终可以选择添加大于数组最大元素的k个元素,并且第(n + k)/ 2个元素始终为数组的中值。

C++
// CPP program to find median of an array when
// we are allowed to add additional K integers
// to it.
#include 
using namespace std;
  
// Find median of array after adding k elements
void printMedian(int arr[], int n, int K)
{
    // sorting  the array in increasing order.
    sort(arr, arr + n);
  
    // printing the median of array.
    // Since n + K is always odd and K < n, 
    // so median of array always lies in 
    // the range of n.
    cout << arr[(n + K) / 2];
}
  
// driver function
int main()
{
    int arr[] = { 5, 3, 2, 8 };
    int k = 3;
    int n = sizeof(arr) / sizeof(arr[0]);
    printMedian(arr, n, k);
    return 0;
}


Java
// Java program to find median of an array when
// we are allowed to add additional K integers
// to it.
import java.util.Arrays;
  
class GFG {
      
    // Find median of array after adding k elements
    static void printMedian(int arr[], int n, int K)
    {
          
        // sorting the array in increasing order.
        Arrays.sort(arr);
      
        // printing the median of array.
        // Since n + K is always odd and K < n, 
        // so median of array always lies in 
        // the range of n.
        System.out.print(arr[(n + K) / 2]);
    }
      
    //Driver code
    public static void main (String[] args)
    {
          
        int arr[] = { 5, 3, 2, 8 };
        int k = 3;
        int n = arr.length;
          
        printMedian(arr, n, k);
    }
}
  
// This code is contributed by Anant Agarwal.


Python3
# Python3 code to find median of an 
# array when we are allowed to add
# additional K integers to it.
  
# Find median of array after 
# adding k elements
def printMedian (arr, n, K):
      
    # sorting the array in 
    # increasing order.
    arr.sort()
      
    # printing the median of array.
    # Since n + K is always odd 
    # and K < n, so median of 
    # array always lies in 
    # the range of n.
    print( arr[int((n + K) / 2)])
  
# driver function
arr = [ 5, 3, 2, 8 ]
k = 3
n = len(arr)
printMedian(arr, n, k)
  
# This code is contributed by "Sharad_Bhardwaj".


C#
// C# program to find median of an array when
// we are allowed to add additional K integers
// to it.
using System;
  
class GFG
{
    // Find median of array after adding k elements
    static void printMedian(int []arr, int n, int K)
    {
        // sorting  the array in increasing order.
        Array.Sort(arr);
       
        // printing the median of array.
        // Since n + K is always odd and K < n, 
        // so median of array always lies in 
        // the range of n.
        Console.Write(arr[(n + K) / 2]);
    }
      
    //Driver code
    public static void Main ()
    {
    int []arr = { 5, 3, 2, 8 };
        int k = 3;
        int n = arr.Length;
        printMedian(arr, n, k);
    }
}
  
// This code is contributed by  anant321.


PHP


输出 :

8