C++ 中查找等于其余所有元素之和的元素


在这个问题中,我们给定一个包含 n 个正值的数组 arr[]。我们的任务是找到**等于数组中所有其他元素之和的元素**。

代码描述:我们需要找到一个元素,其值等于数组中除该元素之外的所有元素的总和。

让我们举个例子来理解这个问题,

输入:arr[] = { 5, 4, 17, 1, 7 }

输出:17

解释 -

其余元素的总和为 (5 + 4 + 1 + 7) = 17,这等于剩余元素 17。

解决方案方法 -

解决这个问题的一个简单方法是利用以下事实:数组中所有元素的总和是给定元素的两倍。为此,我们将遵循以下步骤,

步骤 1:找到数组中所有元素的总和。
步骤 2:循环遍历数组的每个元素,

步骤 2.1:如果 arr[i] == sum/2。

步骤 2.1.1:如果为真。Flag = 1,退出循环。

步骤 2.2.1:如果为假,则忽略。

步骤 3:如果 flag == 1,则打印 arr[i]
步骤 4:否则,打印“未找到此类元素”。

程序说明解决方案的工作原理,

示例

在线演示

#include <iostream>
using namespace std;

void findElemenetInArray(int arr[], int n) {
   
   int arraySum = 0;
   int flag = 0, i;
   for (i = 0; i < n; i++)
      arraySum += arr[i];

   for (i = 0; i < n; i++)
      if ( (2*arr[i]) == arraySum ) {
         flag = 1;
         break;
      }
         
   if(flag)
      cout<<arr[i];
   else
      cout<<"No such element is found!";
   
}

int main() {
   int n = 5;
   int arr[n] = { 5, 4, 7, 1, 17 };
   findElemenetInArray(arr, n);
   return 0;
}

输出

17

更新于: 2021年1月22日

127 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.