「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 **三次 。**请你找出并返回那个只出现了一次的元素。
示例 1:
输入:nums = [2,2,3,2]
输出:3
示例 2:
输入:nums = [0,1,0,1,0,1,100]
输出:100
JavaScript特性
我们可以先将数组排序,这样相同的数字会平在一起,我们再看有哪个数字是和左右两边的数字都不一样的。
var singleNumber = function(nums) {
nums = nums.sort()
let len = nums.length
if(nums[len-1]!=nums[len-2]) return nums[len-1]
for(let i=1;i<len;i+=3){
if(nums[i-1]!=nums[i]) return nums[i-1]
}
};
哈希表
我们可以使用哈希映射统计数组中每个元素的出现次数。对于哈希映射中的每个键值对,键表示一个元素,值表示其出现的次数。
在统计完成后,我们遍历哈希映射即可找出只出现一次的元素。
var singleNumber = function(nums) {
const freq = new Map();
for (const num of nums) {
freq.set(num, (freq.get(num) || 0) + 1);
}
let ans = 0;
for (const [num, occ] of freq.entries()) {
if (occ === 1) {
ans = num;
break;
}
}
return ans;
};