用 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 次瀏覽

職業生涯起步

透過完成課程獲得認證

開始
廣告
© . All rights reserved.