You are given an integer array nums
. The unique elements of an array are the elements that appear exactly once in the array.
Return the sum of all the unique elements of nums
.
Example 1:
Input: nums = [1,2,3,2] Output: 4 Explanation: The unique elements are [1,3], and the sum is 4.
Example 2:
Input: nums = [1,1,1,1,1] Output: 0 Explanation: There are no unique elements, and the sum is 0.
Example 3:
Input: nums = [1,2,3,4,5] Output: 15 Explanation: The unique elements are [1,2,3,4,5], and the sum is 15.
Constraints:
1 <= nums.length <= 100
1 <= nums[i] <= 100
唯一元素的和。
给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。
请你返回 nums 中唯一元素的 和 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-unique-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路是哈希表 + 记录状态,扫描一遍即可。注意 input 给的范围是 1 - 100,所以这里我们用一个长度为 101 的 map 数组记录每个元素是否出现过
因为 Java 数组创建后默认值是 0,所以没有出现过我们记为 0
数字如果第一次出现,我们把 map 里这个数字标记为 1 并且将这个数值累加到结果里
如果遇到一个已经是 1 的数字,把 map 里这个数字标记为 2 并将这个数值从结果里减去,这样下次我们再遇到 2 的时候直接跳过不处理即可
时间O(n)
空间O(1) - map 数组长度只有 101
Java实现
1 class Solution { 2 public int sumOfUnique(int[] nums) { 3 int res = 0; 4 int[] map = new int[101]; 5 for (int num : nums) { 6 if (map[num] == 0) { 7 res += num; 8 map[num] = 1; 9 } else if (map[num] == 1) { 10 res -= num; 11 map[num] = 2; 12 } 13 } 14 return res; 15 } 16 }