LeetCode 846 一手顺子[Map 排序] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 846 一手顺子[Map 排序] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
首先hand的大小一定 是groupSize的倍数,接着统计每个牌数,用map存储,再对hand进行排序,从头对每张牌进行访问,每次访问连续的groupSize,如果有缺失返回false,访问过后要将map中的记录-1,如果一张牌已经访问完,则从map中删除。代码如下:

class Solution 
public:
    bool isNStraightHand(vector<int>& hand, int groupSize) 
        int len = hand.size();
        if(len % groupSize != 0) 
            return false;
        
        sort(hand.begin(), hand.end());
        unordered_map<int, int> mp;
        for(auto& h : hand) 
            mp[h] ++;
        
        for(auto& h : hand) 
            // 已经访问过了
            if(!mp.count(h)) 
                continue;
            
            for(int i = 0; i < groupSize; i ++) 
                int num = h + i;
                if(!mp.count(num)) 
                    return false;
                
                mp[num] --;
                if(mp[num] == 0) 
                    mp.erase(num);
                
            
        
        return true;
    
;

以上是关于LeetCode 846 一手顺子[Map 排序] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

Python|Leetcode《846》《1296》|一手顺子 划分数组为连续数字的集合

Python|Leetcode《846》《1296》|一手顺子 划分数组为连续数字的集合

LeetCode 472. 连接词(字典树+回溯) / 1995. 统计特殊四元组(标记这个题) / 846. 一手顺子

哈希表映射数量关系的取牌题——846. 一手顺子

《LeetCode之每日一题》:251.一手顺子

《LeetCode之每日一题》:251.一手顺子