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

128 阅读1分钟

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

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。 请你找出并返回那个只出现了一次的元素。

示例 1:

输入: nums = [2,2,3,2]
输出: 3

示例 2:

输入: nums = [0,1,0,1,0,1,100]
输出: 100

最简单的方法如下

var singleNumber = function(nums) {
    var obj = {}
    for(var i =0;i<nums.length;i++){
        if(!obj[nums[i]]){
            obj[nums[i]] = 1
        }else{
            obj[nums[i]]++
        }
    }
    var keys = Object.keys(obj)
    for(var j = 0;j<keys.length;j++){
        if(obj[keys[j]] === 1){
            return keys[j]
        }
    }    
};

也可以考虑使用map

var singleNumber = function(nums) {
    const map = new Map();
    for (const key of nums) {
        map.set(key, (map.get(key) || 0) + 1);
    }
    let res = 0;
    for (const [key, value] of map.entries()) {
        if (value === 1) {
            res = key;
            break;
        }
    }
    return res;
};