解:
import java.util.*;
public class Solution {
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxLength (int[] arr) {
ArrayList<Integer> list = new ArrayList<>(),
tempList = new ArrayList<>();
for(int i=0; i<arr.length; i++) {
int num = arr[i];
//数组否包含数字
if(!tempList.contains(num)) {
//数组不包含数字
tempList.add(num);
continue;
}
//数组长度大于等于原数组长度
if(tempList.size() >= list.size()) {
list.clear();//清空原数组
list.addAll(tempList); //添加新数组
tempList.clear();//清空数组
//判断list中重复元素的位置
Integer startIndex = list.indexOf(num);
//tempList重新赋值为【重复数值后的一个数字,到最后一个数字】
tempList.addAll(list.subList(startIndex+1, list.size()));
//添加当前数字
tempList.add(num);
continue;
}
//数组长度不大于原数组不变,处理tempList中的数据,截取没有重复的数组
ArrayList<Integer> tList = new ArrayList<>();
tList.addAll(tempList);
tempList.clear();//清空数组
//判断list中重复元素的位置
Integer startIndex = tList.indexOf(num);
//tempList重新赋值为【重复数值后的一个数字,到最后一个数字】
tempList.addAll(tList.subList(startIndex+1, tList.size()));
//添加当前数字
tempList.add(num);
}
//数组长度大于等于原数组长度
if(tempList.size() >= list.size()) {
list.clear();//清空原数组
list.addAll(tempList); //添加新数组
}
return list.size();
}
}