给定一个由N个正元素组成的数组。任务是找到一个元素,该元素等于数组除自身之外的所有元素的总和。
例子:
Input: arr[] = {1, 2, 3, 6}
Output: 6
6 is the element which is equal to the sum of all
remaining elements i.e. 1 + 2+ 3 = 6
Input: arr[] = {2, 2, 2, 2}
Output: -1
方法:首先,找到数组所有元素的总和。然后遍历每个元素并检查条件是否为(a [i] == sum-a [i]) 。如果为true,则打印该a [i] ,否则,如果未找到此元素,则打印“ -1”。
下面是上述方法的实现:
C++
// C++ implementation of the above approach
#include
#define ll long long int
using namespace std;
// Function to find the element
int findEle(int arr[], int n)
{
// sum is use to store
// sum of all elements
// of array
ll sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
// iterate over all elements
for (int i = 0; i < n; i++)
if (arr[i] == sum - arr[i])
return arr[i];
return -1;
}
// Driver code
int main()
{
int arr[] = { 1, 2, 3, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << findEle(arr, n);
return 0;
}
Java
// Java implementation of the above approach
import java.io.*;
class GFG {
// Function to find the element
static int findEle(int arr[], int n)
{
// sum is use to store
// sum of all elements
// of array
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
// iterate over all elements
for (int i = 0; i < n; i++)
if (arr[i] == sum - arr[i])
return arr[i];
return -1;
}
// Driver code
public static void main (String[] args) {
int arr[] = { 1, 2, 3, 6 };
int n = arr.length;
System.out.print(findEle(arr, n));
}
}
// This code is contributed by shs..
Python3
# Python 3 implementation of
# the above approach
# Function to find the element
def findEle(arr, n) :
# sum is use to store
# sum of all elements
# of array
sum = 0
for i in range(n) :
sum += arr[i]
# iterate over all elements
for i in range(n) :
if arr[i] == sum - arr[i] :
return arr[i]
return -1
# Driver Code
if __name__ == "__main__" :
arr = [1, 2, 3, 6 ]
n = len(arr)
print(findEle(arr, n))
# This code is contributed by Ryuga
C#
// C# implementation of the
// above approach
using System;
class GFG
{
// Function to find the element
static int findEle(int []arr, int n)
{
// sum is use to store
// sum of all elements
// of array
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
// iterate over all elements
for (int i = 0; i < n; i++)
if (arr[i] == sum - arr[i])
return arr[i];
return -1;
}
// Driver code
static public void Main (String []args)
{
int []arr = { 1, 2, 3, 6 };
int n = arr.Length;
Console.WriteLine(findEle(arr, n));
}
}
// This code is contributed
// by Arnab Kundu
PHP
输出:
6
注意:以上问题可以使用“检查数组是否具有等于所有其余元素之和的元素”中的概念来解决。