唯一元素的和

56 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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 <= 100
  • 1 <= 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 );