我的力扣算法1207-独一无二的出现次数

ok,俺又来了,见题知意,,一个数字的出现次数必须是唯一的。看题!
在这里插入图片描述
题目要求很简单,要求一个数组里的数字的出现次数唯一,如果唯一返回true,如果不唯一返回false
这里用到的是map和set函数,直接上代码:

class Solution {
public:
    bool uniqueOccurrences(vector<int>& arr) {
    unordered_map<int,int>m;//定义一个map存放当前数值和其出现次数。
        for(int i=0;i<arr.size();++i)
        {
            m[arr[i]]++;//遍历原数组,如果遇到数就加一出现次数
        }
        set<int>n;//定义set存放出现次数
        for(auto p:m)//遍历map函数,把map函数的value值也就是次数放入set中
            n.insert(p.second);
        return n.size()==m.size();//如果set的长度和map的长度相同,说明次数都是唯一的
    }
};

这里提一下map和set,map的key值也就是第一个值是唯一的,重复插入相同key的值只会覆盖掉之前的,而set一样,set中的数也是唯一的,如果出现了相同的数,只会覆盖掉之前的,就如果有次数相同的两个不同的数,在set中也只会出现一次出现次数,导致set数组长度比map数组长度小。
加了个油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值