本文共 2915 字,大约阅读时间需要 9 分钟。
一、判断时间数组是否连续(格式: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