解题思路:
1 先按升序排序数组,用count记录0的个数
2 从非0数字开始,用need0记录需要的0,假如后一个数字的比前一个数字大1,那么不需要癞子0,因为它们本来就连续;假如大2,那就需要1一个0,count-=1…以此类推。假如最后count<0,说明count不够用,即无法形成顺子。
3 注意,假如有相同数字,返回false。
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
sort(numbers.begin(),numbers.end());
//记录0的个数
int count=0;
for(auto n:numbers){
if(n==0)
++count;
}
for(int i=count+1;i<5;++i){
if(numbers[i]==numbers[i-1])return false; //有相同数字
int need0=numbers[i]-numbers[i-1]-1;
if(need0)
count-=need0;
}
return count>=0;
}
};