📜  找到要添加的最小值,使数组变得平衡

📅  最后修改于: 2022-05-13 01:57:50.218000             🧑  作者: Mango

找到要添加的最小值,使数组变得平衡

给定一个偶数大小的数组,任务是找到可以添加到元素的最小值,以使数组变得平衡。如果数组元素的左半部分之和等于右半部分之和,则数组是平衡的。假设我们有一个数组 1 3 1 2 4 3。前三个元素的总和是 1 + 3 + 1 = 5,后三个元素的总和是 2 + 4 + 3 = 9
所以这是不平衡的,为了使其平衡,我们可以添加的最小数字是 4 到前半部分的任何元素。
例子 :

Input : 1 2 1 2 1 3
Output : 2
Sum of first 3 elements is 1 + 2 + 1 = 4, 
sum of last three elements is 2 + 1 + 3 = 6
To make the array balanced you can add 2.

Input : 20 10
Output : 10

这个想法很简单,我们计算前半部分和后半部分的总和。一旦计算出这些总和,我们就会返回这两个值的绝对差。

C++
#include 
using namespace std;
 
// Returns minimum value that need to be added
// to make array balanced.
int minValueToBalance(int a[], int n)
{
    // Calculating sum of first half elements
    // of an array
    int sum1 = 0;
    for (int i = 0; i < n/2; i++)
        sum1 += a[i];
 
    // Calculating sum of other half elements
    // of an array
    int sum2 = 0;
    for (int i = n/2; i < n; i++)
        sum2 += a[i];
 
    // calculating difference
    return abs(sum1 - sum2);
}
 
// Driver code
int main()
{
    int arr[] = {1, 7, 1, 1, 3, 1};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << minValueToBalance(arr, n)<


Java
// Java program to Find the minimum value
// to be added so that array becomes balanced
 
class Minimum
{
    // Returns minimum value that need to
    // be added to make array balanced.
    public static int minValueToBalance(int a[],
                                        int n)
    {
        // Calculating sum of first half
        // elements of an array
        int sum1 = 0;
        for (int i = 0; i < n / 2; i++)
            sum1 += a[i];
 
        // Calculating sum of other half
        // elements of an array
        int sum2 = 0;
        for (int i = n/2; i < n; i++)
            sum2 += a[i];
 
        // calculating difference
        return Math.abs(sum1 - sum2);
    }
     
    // driver code
    public static void main(String[] args)
    {
        int arr[] = {1, 7, 1, 1, 3, 1};
        int n = 6;
        System.out.print(minValueToBalance(arr, n));
    }
}
 
// This code is contributed by rishabh_jain


Python3
# Python3 program to Find the
# minimum value to be added so that
# array becomes balanced
 
# Returns minimum value that need to
# be added to make array balanced.
def minValueToBalance(a, n):
     
    # Calculating sum of first
    # half elements of an array
    sum1 = 0
    for i in range( int(n / 2)):
        sum1 += a[i]
         
    # Calculating sum of other
    # half elements of an array
    sum2 = 0;
    i = int(n / 2)
    while i < n:
        sum2 += a[i]
        i = i + 1
     
    # calculating difference
    return abs(sum1 - sum2)
 
# Driver code
arr = [1, 7, 1, 1, 3, 1]
n = len(arr)
print(minValueToBalance(arr, n))
 
# This code is contributed by "Sharad_Bhardwaj".


C#
// C# program to Find the minimum value
// to be added so that array becomes balanced
using System;
 
class Minimum {
     
    // Returns minimum value that need to
    // be added to make array balanced.
    public static int minValueToBalance(int []a,
                                        int n)
    {
         
        // Calculating sum of first half
        // elements of an array
        int sum1 = 0;
        for (int i = 0; i < n / 2; i++)
            sum1 += a[i];
 
        // Calculating sum of other half
        // elements of an array
        int sum2 = 0;
        for (int i = n / 2; i < n; i++)
            sum2 += a[i];
 
        // calculating difference
        return Math.Abs(sum1 - sum2);
    }
     
    // Driver Code
    public static void Main()
    {
        int []arr = {1, 7, 1, 1, 3, 1};
        int n = 6;
        Console.Write(minValueToBalance(arr, n));
    }
}
 
// This code is contributed by Nitin Mittal.


PHP


Javascript


输出 :

4