题目来源:
leetcode题目,网址:1748. 唯一元素的和 - 力扣(LeetCode)
解题思路:
使用哈希集合 set 记录已经出现的数字,哈希集合 hasDecreased 记录出现两次及以上的数字。遍历数组,若 set 中不包含该数字,将其添加到 sum 和 set 中;若 set 中已包含该数字但hasDecreased 中不包含该字符,sum 减去该字符并将其添加到 hasDecreased 中。
解题代码:
class Solution {
public int sumOfUnique(int[] nums) {
int sum=0;
Set<Integer> set=new HashSet<>();
Set<Integer> hasDecreased=new HashSet<>();
for(int num:nums){
if(!set.contains(num)){
set.add(num);
sum+=num;
}else{
if(!hasDecreased.contains(num)){
sum-=num;
hasDecreased.add(num);
}
}
}
return sum;
}
}
总结:
官方题解给出了两种解法。第一种是哈希表计数,然后遍历哈希表求和。第二种是哈希表记录元素状态后一次遍历求和,与我的思路类似。