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++
// 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
// 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
# 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#
// 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 // 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 ?> |
Javascript
<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)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!