[LeetCode] 1748. Sum of Unique Elements

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 }

 

LeetCode 题目总结

上一篇:2421 Problem C 最快合并链表(线性表)


下一篇:编程入门联系#03