用 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式
C++
C#
MongoDB
MySQL
JavaScript
PHP