在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

以上是 在C ++中查找数组中非重复(不同)元素的总和 的全部内容, 来源链接: utcz.com/z/327099.html

回到顶部