## 问题描述 给你一个整数数组 nums 。数组中唯一元素是那些只出现 **恰好一次 **的元素。 请你返回 nums 中唯一元素的** 和** 。 ## 输入输出 ### 示例1 ``` 输入:nums = [1,2,3,2] 输出:4 解释:唯一元素为 [1,3] ,和为 4 。 ``` ### 示例2 ``` 输入:nums = [1,1,1,1,1] 输出:0 解释:没有唯一元素,和为 0 。 ``` ### 示例2 ``` 输入:nums = [1,2,3,4,5] 输出:15 解释:唯一元素为 [1,2,3,4,5] ,和为 15 。 ``` 提示: 1 <= nums.length <= 100 1 <= nums[i] <= 100 ## 问题解答 **思路** 利用HashMap记录每个元素出现的个数,将那些出现一次的元素求和 **复杂度** 空间复杂度,需要建立HashMap,O(n) 时间复杂度,一次or两次遍历,O(n) ### 代码实现 **方法1** ```java // 2次遍历 public int sumOfUnique(int[] nums) { HashMap map = new HashMap<>(); for(int i : nums){ if(map.containsKey(i)){ map.put(i, map.get(i)+1); }else{ map.put(i, 1); } } int sum = 0; for(Integer key : map.keySet()){ if(map.get(key)==1) sum += key; } return sum; } ``` **方法2** ```java // 一次遍历,第一次出现加入,第二次再出现的时候就减去,再多就不减维持不变 public int sumOfUnique(int[] nums) { HashMap map = new HashMap<>(); int sum = 0; for(int i:nums){ if(!map.containsKey(i)){ map.put(i, 1); sum += i; }else{ if(map.get(i)==1){ sum -= i; map.put(i, 2); } } } return sum; } ``` 最后编辑:2024年04月23日 ©著作权归作者所有 赞 0 分享
最新回复