给定一个int数组,写一个函数判断该数组中的所有数字是否能组成连续数字。如[1,3,4,6,2,5]能组成连续数字,【1,2,5,4,7】不能。数组中的数也可能重复
呵呵,我采用笨办法:先用一个循环找出数字中的最大值和最小值,然后从最小到最大值在数组中循环查找对应数字,只要有一个数没有找到,就返回false,如果都找到了,就返回true.
Java代码
public boolean isContinousArray(int[] intArr)
{
if(intArr==null) return false;
if(intArr.length<2) return true;
int maxInt=intArr[0],minInt=intArr[0];
for(int i:intArr)
{
System.out.println(i);
if(i>maxInt) maxInt=i;
if(i<minInt) minInt=i;
}
for(int value=minInt;value<=maxInt;value++)
{
boolean found=false;
for(int j:intArr)
{
if(j==value)
{
found=true;
break;
}
}
if(!found) return false;
}
return true;
}
public boolean isContinousArray(int[] intArr)
{
if(intArr==null) return false;
if(intArr.length<2) return true;
int maxInt=intArr[0],minInt=intArr[0];
for(int i:intArr)
{
System.out.println(i);
if(i>maxInt) maxInt=i;
if(i<minInt) minInt=i;
}
for(int value=minInt;value<=maxInt;value++)
{
boolean found=false;
for(int j:intArr)
{
if(j==value)
{
found=true;
break;
}
}
if(!found) return false;
}
return true;
}
是不是还有更好的算法?
|