import java.util.*; public class Solution { /** * * @param arr int整型一维数组 the array * @return int整型 */ public int maxLength (int[] arr) { if(arr == null || arr.length == 0) { return 0 ; } if(arr.length == 1) { return 1 ; } //f[i]表示 以arr[i]结尾的最长无重复连续子数组的长度 int f[] = new int[arr.length] ; f[0] = 1 ;//初始化 只有一个元素的时候,必然为1 int maxLen = -1 ;//记录最长的那一个 for(int i = 1 ; i < f.length ; i ++) {//计算 f[i] = 1 ; //遍历f[i-1],f[i-1]必然是无重复的 // 0,1,2,3,4 int len = 0 ; for(int j = i-1 ; j >= i-f[i-1] ; j--) { if(arr[j] != arr[i]) { len ++ ; } else {//有一个重复的 直接break break ; } } f[i] += len ; if(f[i] > maxLen) { maxLen = f[i] ; } } return maxLen ; } }