一、解决步骤
1、对数组排序
2、找出0的个数
3、找出空缺的位置
#include <iostream>
#include <cstdlib>
using namespace std;
bool IsContinuous(int *number,int length);
int compare(const void* arg1,const void* arg2);
/*
1、对数组排序
2、找出0的个数
3、找出空缺的位置
*/
bool IsContinuous(int *number,int length)
{
if(number == nullptr || length<5)
return false;
qsort(number,length,sizeof(int),compare);
int numberofzero = 0,numberofgap = 0;
for(int i = 0;i<length && number[i]==0;i++)
numberofzero++;
int small = numberofzero;
int big = small+1;
while(big < length)
{
//有对子
if(number[small]==number[big])
return false;
//排序后,number[0],number[1]....number[small-1] 都是0
//number[small]是第一个非0元素,number[big] 是第二个非0元素
numberofgap += number[big]-number[small]-1;
small = big;
big++;
}
return (numberofgap>numberofzero) ? false:true;
}
int compare(const void* arg1,const void* arg2)
{
return *((int*)arg1)-*(int*)arg2;
}
int main()
{
int a[] = {1,3,5,0,6};
cout<<IsContinuous(a,5)<<endl;
return 0;
}