leetcode1207题:独一无二的出现次数

15 篇文章 0 订阅

解题方案:

var uniqueOccurrences = function(arr) {
    const newMap = new Map();
    for(let i=0;i<arr.length;i++){
        if(newMap.has(arr[i])){
            newMap.set(arr[i],newMap.get(arr[i])+1);
        }else{
            newMap.set(arr[i],1);
        }
    }
    const times = new Set();
    for (const [key, value] of newMap) {
        times.add(value);
    }
    return newMap.size===times.size;
};

主要是学会了Map 对象和Set 对象的使用:

Map 对象保存键值对,并且能够记住键的原始插入顺序。用来保存数组中每个值出现的次数:值=>次数;
has()方法用来判断Map实例中是否所查询的键值,get()方法用来获取键对应的值,set()方法用来设置键的值,还有clear()方法清除所有键值对,delete()用来删除某个键值对;

Set 对象存储任何类型的***唯一***值,无论是原始值或者是对象引用。用来过滤掉值相等的键值对;
add()方法用来向Set 对象中添加一个元素,has()方法用来判断Set中是否含有该元素,clear()用来清除Set中所有元素,delete()用来清除set中某个元素;

最后通过判断Map的size和Set的size是否相等来判断是否有重复的出现次数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值