题目
给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。
请你返回 nums 中唯一元素的 和 。
来源:力扣(LeetCode)
解答
通过哈希表存储每个数字出现的次数,最后进行累加即可。
class Solution {
public:
int sumOfUnique(vector<int>& nums) {
unordered_map<int, int> mp;
int ret = 0;
for (auto i: nums) {
mp[i]++;
}
for (auto i: mp) {
if (i.second < 2) {
ret += i.first;
}
}
return ret;
}
};
或一次遍历,当遍历到的数字出现的次数为1时,累加;为2时,减去;大于2时无需操作。
class Solution {
public:
int sumOfUnique(vector<int>& nums) {
unordered_map<int, int> mp;
int ret = 0;
for (auto i: nums) {
mp[i]++;
if (mp[i] == 1) {
ret += i;
} else if (mp[i] == 2) {
ret -= i;
}
}
return ret;
}
};