मान लीजिए हमारे पास कुछ तत्वों के साथ एक ऐरे A है। हमें ऐरे में सभी अलग-अलग तत्वों का योग खोजना है। तो यदि A = [5, 12, 63, 5, 33, 47, 12, 63], तो अलग-अलग तत्वों का योग 160 है। डुप्लीकेट तत्वों को एक बार मानने के बाद बस अनदेखा कर दिया जाता है।
हम इस समस्या को कुशलता से हल करने के लिए अनऑर्डर्ड सेट का उपयोग कर सकते हैं। हम एक सिंगल फॉर लूप चलाएंगे और जो मान पहली बार आता है, उसे योग वेरिएबल में जोड़ें और हैश टेबल में स्टोर करें ताकि अगली बार हम इस मान का उपयोग न करें।
उदाहरण
#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