用 C++ 找出数组中非重复(唯一)元素的总和


假设我们有一个包含一些元素的数组 A。我们必须找出数组中所有唯一元素的总和。因此,如果 A = [5, 12, 63, 5, 33, 47, 12, 63],则唯一元素的总和为 160。重复的元素一旦被考虑就会直接忽略。

我们可以使用无序集来有效地解决这个问题。我们将运行一个单一 for 循环,首次出现的哪个值添加到 sum 变量中并在哈希表中存储,这样下一次我们不会使用这个值。

举例

 实际演示

#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

更新时间:18-12-2019

193 次浏览

职业生涯起步

通过完成课程获得认证

开始
广告