给定两个未排序的数组arr1[]和arr2[] 。从arr1[] 中找出与arr2[]的均值之差< k的元素的总和。
例子:
Input: arr1[] = {1, 2, 3, 4, 7, 9}, arr2[] = {0, 1, 2, 1, 1, 4}, k = 2
Output: 6
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: 5
方法:计算第二个数组的均值,然后遍历第一个数组,计算与均值绝对差
下面是上述方法的实现:
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
输出:
6
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。