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.