一、判断时间数组是否连续(格式:yyyyMMdd)
public static String convert(String[] ints, int index) {
int end = index;
if (ints.length == index) {//结束条件,遍历完数组
return "";
} else {
for (int i = index; i < ints.length; i++) {
if (i < ints.length - 1) {
Date date1 = DateUtils.addDate(DateUtils.format(String.valueOf(ints[i]),"yyyyMMdd"),1);
Date date2 = DateUtils.format(String.valueOf(ints[i + 1]),"yyyyMMdd");
if (date1.getTime()==date2.getTime()){
end = i;
}
else {
if (i > index)
end = end + 1;
break;
}
} else {
if (end == ints.length - 2) {
end = ints.length - 1;
break;
}
}
}
if (index == end)//相等说明不连续
return ints[index] + "," + convert(ints, end + 1);
else//连续
return ints[index] + "-" + ints[end] + "," + convert(ints, end + 1);
}
}
二、判断数字数组是否连续
public static String convert(Integer[] ints, int index) {
int end = index;
if (ints.length == index) {//结束条件,遍历完数组
return "";
} else {
for (int i = index; i < ints.length; i++) {
if (i < ints.length - 1) {
if (ints[i] + 1 == ints[i + 1]) {
end = i;
} else {
if (i > index)
end = end + 1;
break;
}
} else {
if (end == ints.length - 2) {
end = ints.length - 1;
break;
}
}
}
if (index == end)//相等说明不连续
return ints[index] + "," + convert(ints, end + 1);
else//连续
return ints[index] + "-" + ints[end] + "," + convert(ints, end + 1);
}
}
现有一个整数数组元素是0~65535之间的任意数字,已知相同数字不会重复出现,而0可以重复出现,且0可以通配任意一个数字,设计一个算法判断该数组是否连续。注意:
1)数组中的数据可以乱序
2)0可以出现多次
题目分析:
如果一个包含n个数据的数组是连续的,那么最大值和最小值之差一定为n-1;如果包含0的话,那么最大值和最小值之差不能超过n-1。
package dataStructure;
public class MyContinusArray {
static boolean isContinusArray(int a[]) {
int min = a[0];
int max = a[0];
for(int i = 1; i < a.length; i++) {
if(a[i] < min && a[i] !=0 ) {
min = a[i];
}
if(a[i] > max && a[i] != 0) {
max = a[i];
}
}
if((max - min) <= a.length-1 ) {
return true;
}
return false;
}
public static void main(String[] args) {
int array_1[] = {0,2,3,0,0};
int array_2[] = {3,2,5,4,0};
int array_3[] = {10,56,0,6,1};
System.out.println("array_1是否为连续数组:"+isContinusArray(array_1));
System.out.println("array_2是否为连续数组:"+isContinusArray(array_2));
System.out.println("array_3是否为连续数组:"+isContinusArray(array_3));
}
}
原文链接:https://blog.csdn.net/qq_41900081/article/details/86531863