Given an array arr[] of N integers and an integer K, the task is to find the number of anomalies in the array. An anomaly is a number for which the absolute difference between it and all the other numbers in the array is greater than K. Find the number of anomalies.
Examples:
Input: arr[] = {1, 3, 5}, k = 1
Output: 2
1 and 3 are the anomalies.
|1 – (3 + 5)| = 7 > 1
|3 – (1 + 5)| = 3 > 1Input: arr[] = {7, 1, 8}, k = 5
Output: 1
Approach: Find the sum of all the array elements and store it in sum, now for every element of the array arr[i] if the absolute difference of arr[i] with sum – arr[i] is > k then it is an anomaly. Count all the anomalies in the array and print the result in the end.
Below is the implementation of the above approach:
// C++ implementation of the approach #include<bits/stdc++.h> using namespace std;
// Function to return the number of anomalies static int countAnomalies( int arr[],
int n, int k)
{ // To store the count of anomalies
int cnt = 0;
// To store the sum of the array elements
int i, sum = 0;
// Find the sum of the array elements
for (i = 0; i < n; i++)
sum += arr[i];
// Count the anomalies
for (i = 0; i < n; i++)
if ( abs (arr[i] -
(sum - arr[i])) > k)
cnt++;
return cnt;
} // Driver code int main()
{ int arr[] = { 1, 3, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
int k = 1;
cout << countAnomalies(arr, n, k);
} // This code is contributed // by Code_Mech |
// Java implementation of the approach class GFG {
// Function to return the number of anomalies
static int countAnomalies( int arr[], int n, int k)
{
// To store the count of anomalies
int cnt = 0 ;
// To store the sum of the array elements
int i, sum = 0 ;
// Find the sum of the array elements
for (i = 0 ; i < n; i++)
sum += arr[i];
// Count the anomalies
for (i = 0 ; i < n; i++)
if (Math.abs(arr[i] - (sum - arr[i])) > k)
cnt++;
return cnt;
}
// Driver code
public static void main(String[] args)
{
int arr[] = { 1 , 3 , 5 };
int n = arr.length;
int k = 1 ;
System.out.print(countAnomalies(arr, n, k));
}
} |
# Python3 implementation of the approach # Function to return the # number of anomalies def countAnomalies(arr, n, k):
# To store the count of anomalies
cnt = 0
# To store the Sum of
# the array elements
i, Sum = 0 , 0
# Find the Sum of the array elements
for i in range (n):
Sum + = arr[i]
# Count the anomalies
for i in range (n):
if ( abs (arr[i] - ( Sum - arr[i])) > k):
cnt + = 1
return cnt
# Driver code arr = [ 1 , 3 , 5 ]
n = len (arr)
k = 1
print (countAnomalies(arr, n, k))
# This code is contributed # by mohit kumar |
// C# implementation of the approach using System;
class GFG
{ // Function to return the number of anomalies
static int countAnomalies( int [] arr, int n, int k)
{
// To store the count of anomalies
int cnt = 0;
// To store the sum of the array elements
int i, sum = 0;
// Find the sum of the array elements
for (i = 0; i < n; i++)
sum += arr[i];
// Count the anomalies
for (i = 0; i < n; i++)
if (Math.Abs(arr[i] - (sum - arr[i])) > k)
cnt++;
return cnt;
}
// Driver code
public static void Main()
{
int [] arr = { 1, 3, 5 };
int n = arr.Length;
int k = 1;
Console.WriteLine(countAnomalies(arr, n, k));
}
} // This code is contributed by Code_Mech. |
<?php // PHP implementation of the approach // Function to return // the number of anomalies function countAnomalies( $arr , $n , $k )
{ // To store the count of anomalies
$cnt = 0;
// To store the sum of
// the array elements
$sum = 0;
// Find the sum of the array elements
for ( $i = 0; $i < $n ; $i ++)
$sum += $arr [ $i ];
// Count the anomalies
for ( $i = 0; $i < $n ; $i ++)
if ( abs ( $arr [ $i ] -
( $sum - $arr [ $i ])) > $k )
$cnt ++;
return $cnt ;
} // Driver code $arr = array (1, 3, 5);
$n = count ( $arr );
$k = 1;
echo countAnomalies( $arr , $n , $k );
// This code is contributed by Ryuga ?> |
<script> // Javascript implementation of the approach // Function to return the number of anomalies function countAnomalies(arr, n, k)
{ // To store the count of anomalies
var cnt = 0;
// To store the sum of the array elements
var i, sum = 0;
// Find the sum of the array elements
for (i = 0; i < n; i++)
sum += arr[i];
// Count the anomalies
for (i = 0; i < n; i++)
if (Math.abs(arr[i] - (sum - arr[i])) > k)
cnt++;
return cnt;
} // Driver code var arr = [ 1, 3, 5 ];
var n = arr.length;
var k = 1;
document.write(countAnomalies(arr, n, k)); // This code is contributed by umadevi9616 </script> |
2
Time Complexity : O(n)
Auxiliary Space : O(1)