您的位置:首页 > Web前端

[剑指offer]扑克牌的顺子

2016-04-07 16:08 387 查看
/*
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: