标签:map unique Elements nums int Sum num 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 }
标签:map,unique,Elements,nums,int,Sum,num,Unique,elements 来源: https://www.cnblogs.com/cnoodle/p/15865233.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。