思想

首先,如果这五张牌除了0,其余任何一张点数出现次数超过1则说明牌不是顺子,返回false。这里我判断的时候使用了哈希表。其次。开辟一个辅助数组ans。我们把给定牌不是0的牌放到这个ans中。使用sort函数对ans容器排序。这个时候如果第一个元素+4<最后一个元素的话,说明这个牌肯定连续不起来。

代码实现

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        unordered_map<int,int> mp;
        vector<int>ans;
        //如果有不是0的牌出现次数超过1就返回
        for(auto i: numbers) 
        {	
        	++mp[i];
        	if(mp[i]>1&&i!=0) return false;
        }
        //把不是0的牌放到ans中
        for(int i =0;i<5;++i)
        {
        	if(numbers.at(i)!=0) ans.push_back(numbers.at(i));
        }
        
        sort(ans.begin(),ans.end());
        if(ans.at(0)+4<ans.at(ans.size()-1)) return false;
        else return true;
    }
};

当然,不另开辟数组也是可以的。直接对原数组排序判断。