首页 > 技术文章 > [LeetCode] 1748. Sum of Unique Elements

cnoodle 2022-02-06 05:59 原文

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 题目总结

推荐阅读