在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