题目描述:给定长度为N的数组A[0...N-1],求递增且连续数字最长的子数组。
eg:
1,2,3,34,56,57,58,59,60,61,99,122的连续数字最长的一段为56,57,58,59,60,61
算法分析:
遍历数组,从下表为1的开始,如果A[i]-A[i-1]==1,A[0....i-1]的连续子数组长度len加一,否则置最长连续子数组长度为1,
并每次更新最长连续的长度maxLen(比较len和maxLen的值)
代码
public static void main(String[] args) { int[] array = new int[12]; array[0] = -1; array[1] = 2; array[2] = 3; array[3] = 34; array[4] = 56; array[5] = 57; array[6] = 58; array[7] = 59; array[8] = 60; array[9] = 61; array[10] = 99; array[11] = 121; maxSequence(array); } public static void maxSequence(int[] array){ int form = 0; int to = 0; int len = 1; int maxLen = 1; int newForm = 0; for(int i=1; i<array.length;i++){ if(array[i-1] + 1 == array[i]){ len ++; }else{ newForm = i; len = 1; } if(maxLen < len){ maxLen = len; form = newForm; to = i; } } System.out.println("当前数组中最大连续子数组的长度为:"+maxLen); for(int k = form; k<=to ; k++){ System.out.println(array[k]); } }