题目链接:扑克牌的顺子
思路总结
1.排序
2.统计0个数 为a
3.统计不连续数的差 将其求和为b
4.如果不存在对子,且a=b,则为顺子
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
int length= numbers.size();
//1.跳出函数
if(length<1){
return false;
}
//2.排序
sort(numbers.begin(),numbers.end());
//3.声明变量计算0个数
int numberOfzero = 0;
//4.声明变量计算不连续数间隔
int numberOfgap = 0;
//5.统计数组中0个数
for(int i = 0;i<length&&numbers[i]==0;i++){
++numberOfzero;
}
//6.统计数组中间隔个数
int small = numberOfzero;
int big = small+1;
while(big<length){
//a.是否有对子
if(numbers[small] == numbers[big]){
return false;
}
numberOfgap += numbers[big]-numbers[small]-1;
small = big;
++big;
}
return (numberOfgap>numberOfzero)?false:true;
}
int compare(const void *arg1,const void *arg2){
return *(int*)arg1-*(int*)arg2;
}
};