题目
剑指 Offer II 004. 只出现一次的数字
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
示例 1:
输入:nums = [2,2,3,2]
输出:3
示例 2:
输入:nums = [0,1,0,1,0,1,100]
输出:100
解法一
思路
哈希表。
遍历一遍nums数组,在哈希表中记录下每个元素出现的次数。
再遍历一遍哈希表,看看哪个元素出现次数是1,则返回。
代码如下
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
let map = new Map();
for(let i=0;i<nums.length;i++){
if(!map.has(nums[i])){
map.set(nums[i],1)
}else{
map.set(nums[i],map.get(nums[i])+1)
}
}
let res = '';
for(let i of map){
if(i[1] == 1){
res = i[0]
}
}
return res;
};
复杂度分析
时间复杂度:O(n)
空间复杂度:O(n)
解法二
思路
位运算,这个后面再研究吧。。。