- 首先将数组排序
- 再统计0的个数和相邻数字之间的空缺总数
- 如果空缺总数小于或等于0的个数,那么这个数组就是连续的,反之不连续
bool IsContinuous(int* number, int length)
{
if(numbers == NULL || length < 1)
{
return false;
}
qsort(numbers,length,sizeof(int), compare);
int numberOfZero = 0;
int numberOfGap = 0;
for(int i = 0; i < length && number[i] == 0; ++i)
{
++numberOfZero;
}
int small = numberOfZero;
int big = small + 1;
while(big < length)
{
if(numbers[small] == numbers[big])
return false;
numberOfGap += number[big] - numbers[small] - 1;
small = big;
++big;
}
return (numberOfGap > numberOfZero) ? false : true;
}
int compare(void *arg1,void *arg2)
{
return *(int *)arg1 - *(int *)arg2;
}