此题中主要是需要检查除了大小王的连续情况,将其中差的位数予以记录,若总和不大于大小王的总数,则是顺子,否则不是。其中还需注意,如果有重复出现的牌,则必然不是顺子。
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
int kingNum=0;
int len=numbers.size();
if(len!=5)
return false;
vector<int > left;
for(int i=0;i<5;i++)
{
if(numbers[i]==0)
kingNum++;
else
{
for(int j=0;j<left.size();j++)
{
if(numbers[i]==left[j])
return false;
}
left.push_back(numbers[i]);
}
}
sort(left.begin(),left.end());
int diff=0;
for(int i=1;i<left.size();i++)
{
diff+=max(left[i]-left[i-1]-1,0);
}
if(diff>kingNum)
return false;
return true;
}
};