现有一个整数数组,其元素是0-65535之间的任意数字。一直相同数字不会重复出现,而0可以重复出现,且0可以通配任意一个数字。设计一个算法判断该数组中的元素是否连续。
如果一个数组包含n个元素,并且该数组中元素是连续的,那么它一定具有“数组中最大值元素与最小值元素之差为n-1”的性质。如果这些元素中包含0这样的通配数字,并且保证数组中的元素是连续的,那么数组中的非零最大值与非零最小值之差不能超过n-1.
int isContinuousArray(int array[],int len){
int maxVal=array[0],minVal=array[0];
int i;
for(i=1;i<len;i++){
if(array[i]>maxVal&&array[i]!=0)
maxVal=array[i];
else if(array[i]<minVal&&array[i]!=0){
minVal=array[i];
}
}
if(maxVal-minVal>len-1)
return 0;
else{
return 1;}
}