题目描述
给你一个整数数组 nums
。数组中唯一元素是那些只出现 恰好一次 的元素。
返回 nums
中唯一元素的 和。
样例
输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3] ,和为 4。
输入:nums = [1,1,1,1,1]
输出:0
解释:没有唯一元素,和为 0。
输入:nums = [1,2,3,4,5]
输出:15
解释:唯一元素为 [1,2,3,4,5] ,和为 15。
限制
1 <= nums.length <= 100
1 <= nums[i] <= 100
算法
(哈希表) $O(n)$
- 使用哈希表统计每个数字的出现次数,然后将出现次数为 1 的数字加起来。
时间复杂度
- 遍历数组一次,遍历哈希表一次,故总时间复杂度为 $O(n)$。
空间复杂度
- 需要 $O(n)$ 的额外空间存储哈希表。
C++ 代码
class Solution {
public:
int sumOfUnique(vector<int>& nums) {
unordered_map<int, int> h;
for (int x : nums)
h[x]++;
int ans = 0;
for (const auto &[k, v] : h)
if (v == 1)
ans += k;
return ans;
}
};