此題中主要是需要檢查除了大小王的連續情況,將其中差的位數予以記錄,若總和不大於大小王的總數,則是順子,否則不是。其中還需注意,如果有重複出現的牌,則必然不是順子。
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;
}
};