思想
首先,如果这五张牌除了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;
}
};
当然,不另开辟数组也是可以的。直接对原数组排序判断。