LeetCode 1748. Sum of Unique Elements


LeetCode 1748. Sum of Unique Elements (唯一元素的和)

题目

链接

https://leetcode-cn.com/problems/sum-of-unique-elements/

问题描述

给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。

请你返回 nums 中唯一元素的 和 。

示例

输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3] ,和为 4 。

提示

1 <= nums.length <= 100
1 <= nums[i] <= 100

思路

恰好出现一次,就是只有单个,两个和两个以上都不用考虑。每个数字第一次遇见的时候,都是恰好出现一次,如果出现第二次再删除。

这里设置一个map对,如果这个数不是key值,那就代表第一次出现,增加到和当中,并且给map添加一个的值,表示该数字只出现一次。

如果num在其中存在,且值为1,就代表之前出现过一次了,我们应该从答案中减去这个数字,并且更新为,之后再碰到这个数就不用管了。

复杂度分析

时间复杂度 O(n)
空间复杂度 O(n)

代码

Java

    public int sumOfUnique(int[] nums) {
        int ans = 0;
        Map map = new HashMap();
        for (int i = 0; i < nums.length; i++) {
            if (!map.containsKey(nums[i])) {
                ans += nums[i];
                map.put(nums[i], 1);
            } else if (map.get(nums[i]) == 1) {
                ans -= nums[i];
                map.put(nums[i], 2);
            }
        }
        return ans;
    }

相关