排完序,题目就很简单了。需要注意的是题目有王,王可以变任意的牌。
那先统计王的个数。
然后从王之后的第二个数开始看牌。
比上一张牌大于1是正常情况。相等是直接返回,肯定不是顺子。
大于2或者更多的时候,需要看中间的空位,是否有足够多的王来填补。足够填补继续,把王的个数减去填补的空位数,否则直接返回。
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
bool res = true;
int zeros = 0;
sort(numbers.begin(), numbers.end());
for(int i=0;i<5;i++){
if(numbers[i] == 0){
zeros += 1;
}
}
for(int i=zeros+1;i<5;i++){
int step = numbers[i] - numbers[i-1] - 1;
if(step < 0){
res = false;
break;
}
if(step != 0){
if(zeros >= step){
zeros = zeros - step;
}else{
res = false;
}
}
}
return res;
}
};



京公网安备 11010502036488号