题解 | #最长无重复子数组#
最长无重复子数组
http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
创建一个list保存不重复元素的子数组。遍历数组,如果list中与新加的元素重复,从list左边开始收缩,直到数组中不在存在重复元素;如果没有重复,继续添加到list中。每次比较数组长度,取最大长度。
import java.util.*;
public class Solution {
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxLength (int[] arr) {
// write code here
List<Integer> list = new ArrayList<>();
int max = 0;
for(int i = 0;i<arr.length;i++){
int a = arr[i];
if(list.contains(a)){
while(a != list.get(0)){
list.remove(0);
}
list.remove(0);
}
list.add(a);
max = Math.max(max, list.size());
}
return max;
}
}