携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
题目描述
给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。
请你返回 nums 中唯一元素的 和 。【出自力扣】
- 示例 1
输入: nums = [1,2,3,2]
输出: 4
解释: 唯一元素为 [1,3] ,和为 4 。
- 示例 2
输入: nums = [1,1,1,1,1]
输出: 0
解释: 没有唯一元素,和为 0 。
- 示例 3
输入: nums = [1,2,3,4,5]
输出: 15
解释: 唯一元素为 [1,2,3,4,5] ,和为 15 。
提示:
1 <= nums.length <= 1001 <= nums[i] <= 100
思路分析
这道题的题意比较清晰,一看就知道需要我们做什么。题目给出一个整数数组nums,在这个整数数组中找出唯一的元素并且恰好只出现一次,将这些元素相加,求出它们的和并返回出来。
我们可以采用计数的方法,将数组的元素出现的次数记录下来,并找出次数为一的所有元素,然后将它们累加起来就可以了。
先声明一个空对象,循环数组,元素为键,元素出现的次数为值,放进obj对象中,若是此元素已经在对象中出现了,其出现次数就加一,如果还未出现过,就将它以键值队的形式放进去,次数为一;直至循环结束,将所有元素都放进去。
声明一个变量total,存储累加的和。使用for in循环obj对象,若是出现的次数等于一,那么就将元素累加赋值给total,若是不等于一,则不管它;一直循环,直至循环结束,累加到最后的total就是所有出现次数为一的元素的和。
AC代码
function solution( nums ) {
let obj = {};
for(let i=0; i<nums.length; i++) {
if(obj[nums[i]]) {
obj[nums[i]] += 1;
}else{
obj[nums[i]] = 1;
}
}
let total = 0;
for( let key in obj ) {
if(obj[key] == 1) {
total += Number(key);
}
}
console.log(total)
}
let nums = [1,2,3,4,5];
solution( nums );