# Sum of elements in an array whose difference with the mean of another array is less than k

• Last Updated : 09 Jun, 2022

Given two unsorted arrays arr1[] and arr2[]. Find the sum of elements from arr1[] whose difference with the mean of arr2[] is < k.
Examples:

Input: arr1[] = {1, 2, 3, 4, 7, 9}, arr2[] = {0, 1, 2, 1, 1, 4}, k = 2
Output:
Mean of 2nd array is 1.5.
Hence, 1, 2, 3 are the only elements
whose difference with mean is less than 2
Input: arr1[] = {5, 10, 2, 6, 1, 8, 6, 12}, arr2[] = {6, 5, 11, 4, 2, 3, 7}, k = 4
Output:

Approach: Calculate the mean of the second array and then traverse the first array and calculate the sum of those elements whose absolute difference with mean is < k.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach` `#include ` `using` `namespace` `std;`   `// Function for finding sum of elements` `// whose diff with mean is not more than k` `int` `findSumofEle(``int` `arr1[], ``int` `m,` `                 ``int` `arr2[], ``int` `n, ``int` `k)` `{` `    ``float` `arraySum = 0;`   `    ``// Find the mean of second array` `    ``for` `(``int` `i = 0; i < n; i++)` `        ``arraySum += arr2[i];` `    ``float` `mean = arraySum / n;`   `    ``// Find sum of elements from array1` `    ``// whose difference with mean in not more than k` `    ``int` `sumOfElements = 0;` `    ``float` `difference;`   `    ``for` `(``int` `i = 0; i < m; i++) {` `        ``difference = arr1[i] - mean;` `        ``if` `((difference < 0) && (k > (-1) * difference)) {` `            ``sumOfElements += arr1[i];` `        ``}` `        ``if` `((difference >= 0) && (k > difference)) {` `            ``sumOfElements += arr1[i];` `        ``}` `    ``}`   `    ``// Return result` `    ``return` `sumOfElements;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `arr1[] = { 1, 2, 3, 4, 7, 9 };` `    ``int` `arr2[] = { 0, 1, 2, 1, 1, 4 };` `    ``int` `k = 2;` `    ``int` `m, n;`   `    ``m = ``sizeof``(arr1) / ``sizeof``(arr1[0]);` `    ``n = ``sizeof``(arr2) / ``sizeof``(arr2[0]);`   `    ``cout << findSumofEle(arr1, m, arr2, n, k);`   `    ``return` `0;` `}`

## Java

 `// Java implementation of the approach ` `class` `GFG` `{` `    `  `// Function for finding sum of elements ` `// whose diff with mean is not more than k ` `static` `int` `findSumofEle(``int` `[]arr1, ``int` `m, ` `                ``int` `[]arr2, ``int` `n, ``int` `k) ` `{ ` `    ``float` `arraySum = ``0``; `   `    ``// Find the mean of second array ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``arraySum += arr2[i]; ` `    ``float` `mean = arraySum / n; `   `    ``// Find sum of elements from array1 ` `    ``// whose difference with mean in not more than k ` `    ``int` `sumOfElements = ``0``; ` `    ``float` `difference = ``0``; `   `    ``for` `(``int` `i = ``0``; i < m; i++) ` `    ``{ ` `        ``difference = arr1[i] - mean; ` `        ``if` `((difference < ``0``) && (k > (-``1``) * difference)) ` `        ``{ ` `            ``sumOfElements += arr1[i]; ` `        ``} ` `        ``if` `((difference >= ``0``) && (k > difference)) ` `        ``{ ` `            ``sumOfElements += arr1[i]; ` `        ``} ` `    ``} `   `    ``// Return result ` `    ``return` `sumOfElements; ` `} `   `// Driver code ` `public` `static` `void` `main (String[] args)` `{` `    ``int` `[]arr1 = { ``1``, ``2``, ``3``, ``4``, ``7``, ``9` `}; ` `    ``int` `[]arr2 = { ``0``, ``1``, ``2``, ``1``, ``1``, ``4` `}; ` `    ``int` `k = ``2``; `   `    ``int` `m = arr1.length; ` `    ``int` `n = arr2.length; `   `    ``System.out.println(findSumofEle(arr1, m, arr2, n, k)); ` `} ` `}`   `// This code is contributed by mits`

## Python3

 `# Python3 implementation of the approach`   `# Function for finding sum of elements` `# whose diff with mean is not more than k` `def` `findSumofEle(arr1, m, arr2, n, k):` `    ``arraySum ``=` `0`   `    ``# Find the mean of second array` `    ``for` `i ``in` `range``(n):` `        ``arraySum ``+``=` `arr2[i]` `    ``mean ``=` `arraySum ``/` `n`   `    ``# Find sum of elements from array1` `    ``# whose difference with mean ` `    ``# is not more than k` `    ``sumOfElements ``=` `0` `    ``difference ``=` `0`   `    ``for` `i ``in` `range``(m):`   `        ``difference ``=` `arr1[i] ``-` `mean`   `        ``if` `((difference < ``0``) ``and` `(k > (``-``1``) ``*` `difference)):` `            ``sumOfElements ``+``=` `arr1[i]`   `        ``if` `((difference >``=` `0``) ``and` `(k > difference)):` `            ``sumOfElements ``+``=` `arr1[i]`   `    ``# Return result` `    ``return` `sumOfElements`   `# Driver code` `arr1 ``=` `[ ``1``, ``2``, ``3``, ``4``, ``7``, ``9``]` `arr2 ``=` `[ ``0``, ``1``, ``2``, ``1``, ``1``, ``4``]` `k ``=` `2`   `m ``=` `len``(arr1)` `n ``=` `len``(arr2)`   `print``(findSumofEle(arr1, m, arr2, n, k))`   `# This code is contributed by mohit kumar`

## C#

 `// C# implementation of the approach ` `using` `System; `   `class` `GFG` `{` `    `  `// Function for finding sum of elements ` `// whose diff with mean is not more than k ` `static` `int` `findSumofEle(``int` `[]arr1, ``int` `m, ` `                ``int` `[]arr2, ``int` `n, ``int` `k) ` `{ ` `    ``float` `arraySum = 0; `   `    ``// Find the mean of second array ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``arraySum += arr2[i]; ` `    ``float` `mean = arraySum / n; `   `    ``// Find sum of elements from array1 ` `    ``// whose difference with mean in not more than k ` `    ``int` `sumOfElements = 0; ` `    ``float` `difference = 0; `   `    ``for` `(``int` `i = 0; i < m; i++) ` `    ``{ ` `        ``difference = arr1[i] - mean; ` `        ``if` `((difference < 0) && (k > (-1) * difference)) ` `        ``{ ` `            ``sumOfElements += arr1[i]; ` `        ``} ` `        ``if` `((difference >= 0) && (k > difference)) ` `        ``{ ` `            ``sumOfElements += arr1[i]; ` `        ``} ` `    ``} `   `    ``// Return result ` `    ``return` `sumOfElements; ` `} `   `// Driver code ` `static` `void` `Main() ` `{ ` `    ``int` `[]arr1 = { 1, 2, 3, 4, 7, 9 }; ` `    ``int` `[]arr2 = { 0, 1, 2, 1, 1, 4 }; ` `    ``int` `k = 2; `   `    ``int` `m = arr1.Length; ` `    ``int` `n = arr2.Length; `   `    ``Console.WriteLine(findSumofEle(arr1, m, arr2, n, k)); ` `} ` `}`   `// This code is contributed by mits`

## PHP

 ` (-1) * ``\$difference``))` `        ``{ ` `            ``\$sumOfElements` `+= ``\$arr1``[``\$i``]; ` `        ``} ` `        ``if` `((``\$difference` `>= 0) && ` `            ``(``\$k` `> ``\$difference``))` `        ``{ ` `            ``\$sumOfElements` `+= ``\$arr1``[``\$i``]; ` `        ``} ` `    ``} `   `    ``// Return result ` `    ``return` `\$sumOfElements``; ` `} `   `// Driver code ` `\$arr1` `= ``array``( 1, 2, 3, 4, 7, 9 ); ` `\$arr2` `= ``array``( 0, 1, 2, 1, 1, 4 ); ` `\$k` `= 2; `   `\$m` `= ``count``(``\$arr1``);` `\$n` `= ``count``(``\$arr2``);`   `print``(findSumofEle(``\$arr1``, ``\$m``, ` `                   ``\$arr2``, ``\$n``, ``\$k``)); `   `// This code is contributed by Ryuga ` `?>`

## Javascript

 ``

Output:

`6`

Time Complexity: O(n + m)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :