/*
44:> 扑克牌的顺子
判断一个数组的所有元素是不是顺子,0可以代表任何数
{1,5,4,0,3}能不能组成顺子
1.先排序:
{0,1,3,4,5}
2.统计0的个数numofZero
3.统计空缺的个数numofGap : 1,3 空缺 :3-1-1 == 1个
4.将空缺位置用0填充,看够不够
return (numofGap > numofZero) ? false : true;
*/
int _Compare(const void* a, const void * b)
{
return (*(int*)a - *(int*)b);
}
bool IsContinuous(int* num, int len)
{
if (num == NULL || len < 1)
return false;
qsort(num,len,sizeof(int),_Compare);
int numofZero = 0;
int numofGap = 0;
for (int i = 0; i < len && num[i] == 0; ++i)
++numofZero;
int small = numofZero;
int big = small + 1;
while (big < len)
{
if (num[small] == num[big])
return false;
numofGap += num[big] - num[small] - 1;
small = big;
++big;
}
return (numofGap > numofZero) ? false : true;
}
[剑指offer]扑克牌的顺子
最新推荐文章于 2022-02-21 16:50:32 发布