在C ++中查找数组中非重复(不同)元素的总和

考虑我们有一个数组A,其中包含几个元素。我们必须找到数组中所有不同元素的总和。因此,如果A = [5、12、63、5、33、47、12、63],则不同元素的总和为160。一旦考虑了重复元素,就将其忽略。

我们可以使用无序集合有效地解决这个问题。我们将运行一个for循环,并且哪个值是第一次出现,将其求和变量相加并存储在哈希表中,下次将不再使用该值。

示例

#include<iostream>
#include<unordered_set>
using namespace std;
int getNonRepeatSum(int arr[],int n) {
   int sum = 0;
   unordered_set< int > u_set;
   for (int i=0; i<n; i++) {
      if (u_set.find(arr[i]) == u_set.end()) {
         sum += arr[i];
         u_set.insert(arr[i]);
      }
   }
   return sum;
}
int main() {
   int arr[] = {5, 12, 63, 5, 33, 47, 12, 63};
   int n = sizeof(arr)/sizeof(int);
   cout << "Sum is: " << getNonRepeatSum(arr, n);
}

输出结果

Sum is: 160
猜你喜欢