关于unordered_map

unordered_map是非常常用也非常实用的一个建立映射的容器。
当我们要用来标记某个基本类型是否出现过时,可以使用unordered_map < typename,bool >这样就建立了一个基本类型到bool型的映射,如果一开始建立之后,默认任何typename类型都是没有出现过的,即任何typename的映射结果都是false。
同样可以建立unordered_map<typename,int> ,即建立基本类型到int的映射,重要的是,默认任何int型的数据的一开始的映射值均为0,这点非常常用,可以直接使用,不用先查找是否出现过。
力扣914. X of a Kind in a Deck of Cards

class Solution {
    
    
public:
    bool hasGroupsSizeX(vector<int>& deck) {
    
    
        if(deck.size()==1) return false;
        unordered_map<int,int> mp;
        for(int i=0;i<deck.size();i++) mp[deck[i]]++;
        int ans=mp.begin()->second;
        for(auto it=mp.begin();it!=mp.end();it++){
    
    //注意遍历技巧
            ans=gcd(ans,it->second);//gcd函数,最好用__gcd(x,y)
            if(ans==1) return false;
        }
        return true;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_44321570/article/details/113078403
今日推荐