Find the deleted value from the array when average of original elements is given
Last Updated :
21 Dec, 2022
Given an array of length N + K. Also given the average avg of all the elements of the array. If an element that appears exactly K time got removed from the array (all the occurrences) and the resultant array is given, the task is to find the element X. Note that if X is not an integer then print -1.
Examples:
Input: arr[] = {2, 7, 3}, K = 3, avg = 4
Output: 4
The original array was {2, 7, 3, 4, 4, 4}
where 4 which occurred thrice was deleted.
(2 + 7 + 3 + 4 + 4 + 4) / 6 = 4
Input: arr[] = {5, 2, 3}, K = 4, avg = 7;
Output: -1
The required element is 9.75 which is not an integer.
Approach:
- Find the sum of the array elements and store it in a variable sum.
- Since X appeared K times then the sum of the original array will be sumOrg = sum + (X * K).
- And the average is given to be avg i.e. avg = sumOrg / (N + K).
- Now, X can be easily calculated as X = ((avg * (N + K)) - sum) / K
Below is the implementation of the above approach:
C++
// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Function to return the missing element
int findMissing(int arr[], int n, int k, int avg)
{
// Find the sum of the array elements
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
// The numerator and the denominator
// of the equation
int num = (avg * (n + k)) - sum;
int den = k;
// If not divisible then X is
// not an integer
// it is a floating point number
if (num % den != 0)
return -1;
// Return X
return (num / den);
}
// Driver code
int main()
{
int k = 3, avg = 4;
int arr[] = { 2, 7, 3 };
int n = sizeof(arr) / sizeof(int);
cout << findMissing(arr, n, k, avg);
return 0;
}
Java
// Java implementation of the approach
class GFG
{
// Function to return the missing element
static int findMissing(int arr[], int n,
int k, int avg)
{
// Find the sum of the array elements
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += arr[i];
}
// The numerator and the denominator
// of the equation
int num = (avg * (n + k)) - sum;
int den = k;
// If not divisible then X is
// not an integer
// it is a floating point number
if (num % den != 0)
return -1;
// Return X
return (int)(num / den);
}
// Driver code
public static void main (String[] args)
{
int k = 3, avg = 4;
int arr[] = { 2, 7, 3 };
int n = arr.length;
System.out.println(findMissing(arr, n, k, avg));
}
}
// This code is contributed by AnkitRai01
Python3
# Python3 implementation of the approach
# Function to return the missing element
def findMissing(arr, n, k, avg):
# Find the sum of the array elements
sum = 0;
for i in range(n):
sum += arr[i];
# The numerator and the denominator
# of the equation
num = (avg * (n + k)) - sum;
den = k;
# If not divisible then X is
# not an integer
# it is a floating point number
if (num % den != 0):
return -1;
# Return X
return (int)(num / den);
# Driver code
k = 3; avg = 4;
arr = [2, 7, 3] ;
n = len(arr);
print(findMissing(arr, n, k, avg));
# This code is contributed by 29AjayKumar
C#
// C# implementation of above approach
using System;
class GFG
{
// Function to return the missing element
static int findMissing(int []arr, int n,
int k, int avg)
{
// Find the sum of the array elements
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += arr[i];
}
// The numerator and the denominator
// of the equation
int num = (avg * (n + k)) - sum;
int den = k;
// If not divisible then X is
// not an integer
// it is a floating point number
if (num % den != 0)
return -1;
// Return X
return (int)(num / den);
}
// Driver code
public static void Main (String[] args)
{
int k = 3, avg = 4;
int []arr = { 2, 7, 3 };
int n = arr.Length;
Console.WriteLine(findMissing(arr, n, k, avg));
}
}
// This code is contributed by Rajput-Ji
JavaScript
<script>
// Javascript implementation of the
// above approach
// Function to return the missing element
function findMissing(arr, n, k, avg)
{
// Find the sum of the array elements
var sum = 0;
for (var i = 0; i < n; i++) {
sum += arr[i];
}
// The numerator and the denominator
// of the equation
var num = (avg * (n + k)) - sum;
var den = k;
// If not divisible then X is
// not an integer
// it is a floating point number
if (num % den != 0)
return -1;
// Return X
return (Math.floor(num / den));
}
// Driver code
var k = 3;
var avg = 4;
var arr = [ 2, 7, 3 ];
var n = arr.length;
document.write(findMissing(arr, n, k, avg));
// This code is contributed by ShubhamSingh10
</script>
Time Complexity: O(n), where n is the size of the given array.
Auxiliary Space: O(1)
Similar Reads
Find the original Array from given array where ith element is the average of first i elements Given an array arr[] of length N, the task is to find the original array such that every ith element in the given array(arr[i]) is the average value of the first i elements of the original array. Examples: Input: arr = {4 3 3 3} Output: 4 2 3 3Explanation: (4) / 1 = 1, (4+2) / 2 = 3, (4+2+3) / 3 = 3
5 min read
Find all indices of Array having value same as average of other elements Given an array arr[] of N integers, the task is to find all indices in the array, such that for each index i the arithmetic mean of all elements except arr[i] is equal to the value of the element at that index. Examples : Input: N = 5, arr[] = {1, 2, 3, 4, 5}Output : {2}Explanation : Upon removing a
6 min read
Find the position of the last removed element from the array Given an array of size N and an integer M . Perform the following operations on the given array: If a[i] > M then push a[i] - M to end of the array, otherwise remove it from the array.Perform the first operation while the array is non-empty. The task is to find the original position of the elemen
6 min read
Find the largest after deleting the given elements Given an array of integers, find the largest number after deleting the given elements. In case of repeating elements, delete one instance for every instance of the element present in the array containing the elements to be deleted. Examples: Input : array[] = { 5, 12, 33, 4, 56, 12, 20 } del[] = { 1
6 min read
Maximize the first element of the array such that average remains constant Given an array arr[] of length N and an integer X, the task is to find the maximum value R of updated first element such that the average of the array remains constant and no elements of the array should become negative. The maximum value of the first element should be in the range arr[0] <= R
6 min read