题目:
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
示例1:
示例2:
输入:nums = [0,1,0,1,0,1,99]
输出:99
本来的想法是将重复的数字存在一个数组,再和原来的对比,怎么写都不对,改天再改逻辑了,代码是官方的答案
1 var singleNumber = function(nums) {
2 const map = new Map();
3 for(const num of nums){
4 //map.set(数值,出现次数) map.get(num)初始都是Undefine,取0,第一次出现+1,第二次出现取原来的1再+1,如第一次出现1:set(1,1),第二次出现1:set(1,1+1)
5 map.set(num,( map.get(num) || 0 ) + 1);
6 }
7 let a = 0;
8 //将原来的格式:map[[1,3][0,3][99,1]]拆解为map[1,3][0,3][99,1],即返回新的迭代对象
9 for(const [num,ooc] of map.entries()){
10 if (ooc===1){
11 a = num;
12 }
13 }
14 return a;
15 };