[路飞]_只出现一次的数字的一种解题思路

115 阅读1分钟

「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

LeetCode 剑指Offer || 004.只出现一次的数字

题目要求
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
示例
输入:nums = [2,2,3,2]
输出:3
思路1

使用HashMap

1.new Map 然后便利数组,把Map的key设置为当前便利的值,把value设置为当前遍历的值出现的次数
let obj = new Map();
for (let temp of nums) {  
    obj.set(temp, (obj.get(temp) || 0), + 1);
}
2.把Map进行一下entries,转换成一个拥有key值和value值的数组,然后遍历这个数组,如果value==1就说明这个key就是我们要找的值
for (let [temp, times] of obj.entries()) {  
    if (times == 1) {    
        return temp;  
    }
}
完整代码
var singleNumber = function(nums) {    
    let obj = new Map();    
    for (let temp of nums) {        
        obj.set(temp, (obj.get(temp) || 0) + 1);    
    }    
    for (let [temp, times] of obj.entries()) {        
        if (times == 1) {            
            return temp;        
        }    
    }
};