题目

给你一个整数数组 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;
    }
};